2010-07-16 5 views
0

Je souhaite utiliser SDelete après l'exécution d'un code sur une page asp.net. SDelete est un outil de ligne de commande. Ma question spécifique est de savoir si quelqu'un a été capable de lancer cette SDelete à partir d'une page asp.net? Question plus générique serait, comment vous exécutez un utilitaire de ligne de commande à partir d'une page asp.net?SDelete appelée depuis la page asp.net

grâce

Répondre

1

Vous pouvez exécuter une ligne de commande utilitaire en utilisant la Process Class

Process myProcess = new Process(); 

myProcess.StartInfo.UseShellExecute = false; 
// You can start any process, HelloWorld is a do-nothing example. 
myProcess.StartInfo.FileName = "C:\\HelloWorld.exe"; 
myProcess.StartInfo.CreateNoWindow = true; 
myProcess.Start(); 

Un autre exemple plus proche de asp.net, que j'attends à la fin, et lire la sortie.

 Process compiler = new Process(); 

     compiler.StartInfo.FileName = "c:\\hello.exe"; 

     compiler.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8; 

     compiler.StartInfo.UseShellExecute = false; 
     compiler.StartInfo.CreateNoWindow = false; 

     compiler.StartInfo.RedirectStandardError = true; 
     compiler.StartInfo.RedirectStandardOutput = true; 
     compiler.StartInfo.RedirectStandardInput = true; 

     // here I run it 
     compiler.Start(); 

     compiler.StandardInput.Flush(); 
     compiler.StandardInput.Close(); 

     // here I get the output 
     string cReadOutput = compiler.StandardOutput.ReadToEnd(); 

     compiler.WaitForExit(); 
     compiler.Close(); 
1

réponse Aristos travaillera dans les cas où privs utilisateurs sont dans l'ordre et le SysInternals CLUF est reconnu. Par cela, je veux dire que l'utilitaire sdelete.exe de SysInternals sera exécuté sous le compte Asp.Net attribué dans IIS. Si ce compte ne dispose pas des autorisations appropriées et n'a pas accepté le CLUF contextuel, le fichier n'est pas supprimé. Je suis confronté à ce problème en ce moment même.

Vous pouvez spécifier le domaine/utilisateur/mot de passe utilisé pour exécuter le processus. Cela est décrit ici: http://social.msdn.microsoft.com/Forums/hu-HU/netfxbcl/thread/70b2419e-cb1a-4678-b2ae-cedcfe08d06f L'auteur de ce thread avait des problèmes similaires, qu'il a résolu en changeant la propriété du fichier sdelete.exe.

Ce fil a également des informations sur la connexion en tant qu'utilisateur utilisé pour exécuter le processus et d'accepter le contrat de licence SysInternals: sdelete.exe is not working with cfexecute

Cependant ce n'est pas possible si vous prévoyez d'utiliser le haut-Asp. Comptes système nets, car ces comptes d'utilisateur n'autorisent pas les connexions de type. Je peux être forcé de créer un utilisateur distinct avec lequel je peux me connecter et accepter le CLUF, puis spécifier ces informations d'identification pour exécuter le processus. Malheureusement dans mon cas, je n'ai peut-être pas la possibilité de créer des utilisateurs sur mon serveur de production.

Il existe des moyens de forcer l'acceptation du CLUF avec un paramètre de ligne de commande ou une simple entrée de registre. Mais je pense que cela ne fonctionne que pour les utilisateurs "réguliers" - pas les utilisateurs du système intégré.

Questions connexes