我有一个c#应用程序需要做一些管理员(一些安装的东西)的事情,然后它需要以非管理员身份运行另一个进程。我之前没有对UAC做过任何事情,但我认为必须有办法做到这一点,对吧?如何从管理员运行非管理员进程c#应用程序
这也需要自动化,所以假设c#应用程序是以管理员凭证启动的。
基本程序将需要做这样的事情:
// MUST run this process as admin
Process adminInstall = new Process();
adminInstall.StartInfo.FileName = "install.bat";
adminInstall.Start();
adminInstall.WaitForExit();
// CANNOT run this process as admin
Process nonAdminProcess = new Process();
nonAdminProcess.StartInfo.FileName = "runner.cmd";
nonAdminProcess.StartInfo.UseShellExecute = false;
nonAdminProcess.StartInfo.RedirectStandardOutput = true;
nonAdminProcess.OutputDataReceived += new DataReceivedEventHandler(myHandler);
nonAdminProcess.Start();
nonAdminProcess.BeginOutputReadLine();
nonAdminProcess.WaitForExit();
可能的重复[如何删除子进程的权限](http://stackoverflow.com/questions/1173630/how-do-you-de-elevate-privileges-for-a-child-进程) –