2011-07-26 2 views
3

C#에서 상승 된 권한으로 셸 명령을 실행하려고합니다. 그러나 다음 코드는 다음을 반환합니다.C#에서 ProcessStartInfo 및 Process.Start는 프로그램을 찾을 수 없습니다.

지정한 파일을 찾을 수 없습니다.

string command = System.IO.Path.Combine(Environment.SystemDirectory, "wdsutil.exe"); 
string args = ""; //Appropriate arguments 
ProcessStartInfo psInfo = new ProcessStartInfo(command); 
psInfo.Arguments = args; 
psInfo.Verb = "runas"; 

try 
{ 
    Process p = Process.Start(psInfo); 
    p.WaitForExit(); 
    return "Try Done"; 
} 
catch(Exception e) 
{ 
    return e.Message; 
} 

오류뿐만 아니라 접두어가 붙은 SystemDriectory없이 존재한다.

그러나 C : \ wdsutil (또는 C의 다른 명령) 명령을 실행하면 명령이 오류를 반환하지 않습니다.

방법이 일부 내부 디렉토리에서 synthezied입니다 ... 내가 Process.Start를가

+1

'Environment.SystemDirectory' 무엇을 반환? – Amy

+0

C : \ Windows \ System32 – Chris

답변

3

system32를이 최신 시스템 (2008 ESP. 64 비트 윈도우 7) "진짜"없습니다에 SYSTEM32에이 명령을 실행하려면 어떻게해야합니까 액세스 할 때 다른 응용 프로그램 (32 대 64)의 서로 다른 콘텐츠를 표시합니다 ...

+0

고마워요! 이것은 그것을 해결하기 위해해야 ​​할 일이었습니다. 관련 항목 : [http://support.microsoft.com/kb/942589]() (XP는 말한다, 서버 2008에 적용, 내가 오전 OS가) _The 긴 대답은 C를 사용하는 것입니다 : \ Windows \ Sysnative 대신 디렉토리로 – Chris

0

나는 코드를 실행하여 C : \ Windows \ System32 디렉토리에있는 실행 파일로 변경했습니다. 괜찮아. \ WINDOWS \ system32를 어디든지이에서 실행하려고 : EXE 파일이 C에 있는지 확인하십시오

제안 (I 승 7 64 비트를 실행하고 있습니다). 또한 인터넷에서 다운로드 한 경우 차단 해제되어 있는지 확인하십시오 (마우스 오른쪽 버튼으로 exe> 속성> 차단 해제).

 string command = System.IO.Path.Combine(Environment.SystemDirectory, "wscript.exe"); 
     string args1 = ""; //Appropriate arguments 
     ProcessStartInfo psInfo = new ProcessStartInfo(command); 
     psInfo.Arguments = args1; 
     psInfo.Verb = "runas"; 

     try 
     { 
      Process p = Process.Start(psInfo); 
      p.WaitForExit(); 
      //return "Try Done"; 
     } 
     catch (Exception e) 
     { 
      //return e.Message; 
     } 
+0

실제로 C : \ Windows \ System32에 있으며 인터넷에서 다운로드되지 않았습니다 (Microsoft 배포 CD에서 설치됨) – Chris

관련 문제