2010-07-19 3 views
0

Je tente de tuer un processus à distance en utilisant pskill. A partir de la ligne de commande, pskill fonctionne très bien, mais lorsque vous essayez la même commande dans C# Im, vous obtenez une erreur d'accès refusé.en cours d'exécution pskill.exe "accès refusé"

var startInfo = new ProcessStartInfo { 
              FileName = "pskill.exe", 
              Arguments = "-t \\" + _currentMachine + 
                 " -u BobSmith -p Pass123 " + _currentService + 
                 " /acceptEULA" 
             }; 

    try { 
     using (Process exeProcess = Process.Start(startInfo)) { 
      exeProcess.WaitForExit(); 
     } 
    } catch { 
     Console.WriteLine("Cannot forcibly kill process."); 
    } 

J'ai même essayé de créer un fichier .bat qui fonctionne très bien manuellement mais je reçois la même erreur lorsque vous essayez d'appeler la .bat à partir de C#.

Je suis sur une machine XP essayant d'accéder à un serveur win 2003.

+0

Est-ce que le compte 'BobSmith' a suffisamment de privilèges pour tuer les processus? – Oded

+0

Oui, si je lance manuellement le fichier .bat, le processus est détruit. – Coward

Répondre

0

Je voudrais vérifier vos informations d'identification. C'est soit cela ou votre processus est 'verrouillé'.

+0

En supposant que vous avez raison, savez-vous pourquoi l'exécution du fichier .bat tue manuellement le processus, mais pas si je lance le fichier à partir du code C#. – Coward

+0

En regardant à nouveau, comment obtenez-vous votre _CurrentService. Avez-vous essayé d'obtenir le PID à la place? – drpcken

+0

pas encore mais c'est une excellente suggestion, je dois essayer cela suivant. – Coward

0

En C#, les caractères des chaînes sont échappés par défaut. La chaîne que vous affectez à Arguments contient deux caractères d'échappement. Je soupçonne qu'ils sont transformés en une seule barre oblique inverse. Ajoutez un @ devant la définition de chaîne pour résoudre ce problème.

Arguments = @"-t \\" + _currentMachine + 

En tout cas, je vous suggère d'ajouter le code à écrire toute la ligne de commande dans un fichier texte et vérifier qu'il est comme vous en avez besoin. Si le fichier texte a une extension de chauve-souris, pouvez-vous l'exécuter avec succès?

1

Pour le gars à côté ...

pskill.exe nécessaire pour être exécuté en mode de compatibilité Win2000.