2010-07-19 6 views
0

pskill을 사용하여 프로세스를 원격으로 종료하려고 시도하는 중입니다.실행중인 pskill.exe가 "액세스가 거부되었습니다."

명령 줄에서 pskill은 훌륭하게 작동하지만 C#에서 동일한 명령을 사용하면 액세스가 거부되었습니다.

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."); 
    } 

난 잘 수동으로 실행하는 .BAT 파일을 만드는 시도했지만 C 번호에서 박쥐를 호출 할 때 저도 같은 오류가 발생합니다.

Win 2003 서버에 액세스하려고 시도하는 XP 컴퓨터에 있습니다.

+0

'BobSmith' 계정에 프로세스를 죽일 수있는 충분한 권한이 있습니까? – Oded

+0

예 .bat 파일을 수동으로 실행하면 프로세스가 종료됩니다. – Coward

답변

0

신원을 다시 확인합니다. 그것은 또는 귀하의 프로세스가 '잠겨'있습니다.

+0

당신이 옳다고 가정 할 때 .bat 파일을 수동으로 실행하면 프로세스가 종료되지만 C# 코드 내에서 파일을 실행하는 이유는 알 수 있습니까? – Coward

+0

다시 한번 살펴보면 _CurrentService를 어떻게 얻고 있습니까? 대신 PID를 얻으려고 했습니까? – drpcken

+0

아직 안됐지만 좋은 제안 이니, 나도 그걸 시도해야 해. – Coward

0

C#에서 문자열의 문자는 기본적으로 이스케이프됩니다. 인수에 할당 한 문자열에는 두 개의 이스케이프 문자가 포함됩니다. 나는 그들이 단일 백 슬래시로 바뀌 었다고 생각한다. 이 문제를 해결하려면 문자열 정의 앞에 @을 추가하십시오.

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

모든 경우에 텍스트 파일에 전체 명령 줄을 작성하고 필요에 따라 코드를 추가하는 코드를 추가하는 것이 좋습니다. 텍스트 파일에 박쥐 확장 기능이 있으면 성공적으로 실행할 수 있습니까?

1

다음 사람은 ...

pskill.exe는 Win2000 호환 모드에서 실행해야했습니다.

관련 문제