2014-03-24 2 views
0

내가 사용하는 일부 C# 코드에서 관리자 권한이있는 배치 파일을 호출하려고 시도하고 System.DiagnosticProcess.Start() 여기에 언급 한 바와 같이 : How to start a Process as administrator mode in C#.C# Process.Start를() 관리자 권한이 2009

승격 된 명령 프롬프트와 runas /user:administrator program.exe에서 빌드 된 실행 파일을 호출합니다. 하위 프로세스는 내 프로그램 외부에서 호출되면 성공하지만 내 프로그램에서 호출하면 관리자 작업에서 실패합니다.

나는 매니 페스트를 사용하여 Process.Verb = "runas"을 설정하려고했지만 행운은 없습니다.

서브 프로세스는 드라이버를 설치하고 내 프로그램은 해당되는 경우 버전 번호를 확인합니다.

도움 주셔서 감사합니다.

<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
    </requestedPrivileges> 

응용 프로그램 자체와 동일한 높이 수준에서 다른 프로세스를 생성합니다 :

+0

프로그램이 관리자 권한으로 실행됩니까? 프로그램에서 생성 한 모든 프로세스는 프로세스를 생성하는 프로세스와 동일한 권한을가집니다. – aevitas

답변

0

는 응용 프로그램의 매니페스트에 다음 행이 있는지 확인합니다. 즉, 응용 프로그램이 비 관리자로 실행되는 경우 해당 프로세스가 생성하는 모든 프로세스가 관리 권한없이 실행됩니다.

배치 파일을 시작하기 전에 상위 응용 프로그램의 권한이 상승되어 있는지 확인하십시오.

+0

그게 내가 생각한거야, 그리고 작업 관리자는 하위 프로세스가 관리자 계정으로 실행되고 있다고보고하지만 드라이버가 설치되지 않기 때문에 권한이 없습니다. – user3456395

+0

관리자 계정으로 실행되는 경우 관리자 권한없이 실행될 수 있습니다. 높은 수준의 사용 권한을 얻으려면 응용 프로그램 매니페스트의 관리자가 명시 적으로 필요합니다. – aevitas

+0

내 프로그램에 대해 requestedExecutionLevel을 다시 설정하려고 시도했으며 관리자 권한으로 실행되고 있는지 확인했습니다 (파일/레지스트리 수정으로 테스트 됨). 배치 파일에 대해 requestedExecutionLevel을 지정하는 방법이 있습니까? 하위 프로세스는 여전히 주 프로그램과 동일한 권한을 가지고 있지 않습니다. – user3456395

0

관리자 권한은 runas을 사용할 때 실행 파일에만 주어 지므로 배치 파일을 직접 호출 할 수 없습니다. p.StartInfo.FileName = program.bat 대신 p.StartInfo.FileName = "cmd.exe"p.StartInfo.Arguments = " /C ..."으로 전화해야합니다.

관련 문제