1
정상적인 프로세스에서 필수 admin 권한 (해당 app.manifest에 정의 된)으로 프로세스를 시작하고 출력을 읽어야합니다. 더 높은 권한으로 프로세스를 시작하기 위해 내가 보는 방법대로 UseShellExecute = true
을 설정해야합니다. 하지만 그렇게하면 표준 출력을받지 못하게됩니다.
다음은 내 코드입니다,하지만 너무 관리자 권한을 가지고 현재의 프로세스가 필요합니다 (이 거대한 응용 프로그램이기 때문에 우리가 감당할 수없는 이것은 고도를 필요로하는 유일한 부분입니다) : 나는 결국더 높은 권한으로 프로세스를 시작하고 출력을 읽으십시오.
if (bAdmin)
{
Process p = new Process
{
StartInfo =
{
Arguments = "-GetRestorePoints",
FileName = Environment.CurrentDirectory + @"\Hamekare.AdminSettings.exe",
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
RedirectStandardOutput = true,
UseShellExecute = false
}
};
p.OutputDataReceived += p_OutputDataReceived;
p.Start();
p.BeginOutputReadLine();
}