2017-11-04 1 views
0

관리자 권한으로 C# 코드에서 .bat 파일을 시작하려고합니다. 나는 app.manifest이를 추가하려고 :C# 코드에서 관리자 권한으로 (수동으로) .bat 파일을 실행하는 방법

psi.Verb = "runas"; 

하지만 성공하지 : 내 프로세스

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

또는이 정보를 시작합니다. cmd의 제목은 "Administrator : ..."처럼 보이지만 관리 권한이있는 .bat 파일을 수동으로 실행할 때 (오른쪽 클릭 -> 관리자 권한으로 실행)와 같이 제대로 작동하지 않습니다. 문제가 될 수있는 아이디어가 있습니까?

편집

일부 작은 코드 :

ProcessStartInfo sti = new ProcessStartInfo(); 
sti.FileName = "myScript.bat"; 
sti.Verb = "runas"; 
Process.Start(sti); 
+0

어떤면에서 제대로 작동하지 않습니까? –

+0

음. 그. 박쥐 레지스트리 키를 추가해야합니다. 코드에서 실행하면 작동하지 않습니다. –

+0

많은 코드를 시험해 보았습니다. 인터넷에서 비슷한 문제를 찾고 있었고 복사 된 코드로 성공할 수있었습니다. –

답변

1

당신은 스크립트 파일을 실행 제외하고 그 과정 cmd.exe를 시작하고 파일로의 이름을 전달한다, 그것의 가장 정확한 있습니다 그것에 대한 매개 변수. 또한 명령이 완료된 후 명령 창을 유지할지 여부에 따라 /K 또는 /C을 전달할 수 있습니다. 더 많은 옵션을 보려면 cmd /?을 실행하십시오.

만, 당신의 .bat 파일에 실제 경로와 batchFilePath 변수의 값을 대체 당신이 현재 가지고있는 대신에이 코드를 시도하고 관리자로 실행하기 UAC 프롬프트 얻어야한다 :

var batchFilePath = @"c:\public\temp\temp.cmd"; 

var startInfo = new ProcessStartInfo 
{ 
    FileName = "cmd.exe", 
    // Use /K to have the new cmd window stay after the batch file is done 
    Arguments = $"/C \"{batchFilePath}\"", 
    Verb = "runas" 
}; 

Process.Start(startInfo).WaitForExit(); 
+0

도움을 주시면 감사하겠습니다. 코드가 완벽하게 실행되고 있습니다. Verb = "runas"와 수동으로 클릭 한 관리자 권한으로 실행 사이에는 차이가 있어야합니다. 그게 내 문제 야. –

관련 문제