我正在尝试使用这里提到的C#的Process.Start()在一些System.Diagnostic代码中调用具有管理员权限的批处理文件:How to start a Process as administrator mode in C#。
我从提升的命令提示符和runas /user:administrator program.exe调用构建的可执行文件。当在我的程序外调用时,子进程成功,但当我的程序调用它的管理员任务时,子进程失败。
我尝试使用清单并设置Process.Verb = "runas",但没有成功。
子进程安装一个驱动程序,如果相关,我的程序将验证版本号。
谢谢你的帮助!
发布于 2014-03-25 01:20:36
确保您的应用程序清单中包含以下行:
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>您的应用程序将在与其自身相同的海拔级别上派生其他进程。这意味着如果您的应用程序以非管理员身份运行,它产生的每个进程也将在没有管理权限的情况下运行。
在启动批处理文件之前,请确保父应用程序具有提升的权限。
发布于 2014-03-25 20:39:25
原来在使用runas时,管理员权限只授予可执行文件,所以您不能直接调用批处理文件。你应该用p.StartInfo.FileName = "cmd.exe"和p.StartInfo.Arguments = " /C ..."来调用它,而不是p.StartInfo.FileName = program.bat。
https://stackoverflow.com/questions/22616160
复制相似问题