我正在尝试使用System.Diagnostic
的{{1}}调用某些C#代码中具有管理员权限的批处理文件,如下所述:
How to start a Process as administrator mode in C#。
我从提升的命令提示符以及Process.Start()
调用构建的可执行文件。在我的程序之外调用时,子进程成功,但在我的程序调用时,它的管理员任务失败。
我尝试过使用清单并设置runas /user:administrator program.exe
,但没有运气。
子进程安装驱动程序,我的程序验证版本号是否相关。
感谢您的帮助!
答案 0 :(得分:0)
确保您的应用程序的清单中包含以下行:
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
您的应用程序将在与其自身相同的高程级别生成其他进程。这意味着如果您的应用程序以非管理员身份运行,那么它产生的每个进程都将在没有管理权限的情况下运行。
在启动批处理文件之前,请确保您的父应用程序具有提升的权限。
答案 1 :(得分:0)
使用runas
时,仅向可执行文件提供管理员权限,因此您无法直接调用批处理文件。您应该使用p.StartInfo.FileName = program.bat
和p.StartInfo.FileName = "cmd.exe"
来调用p.StartInfo.Arguments = " /C ..."
而不是{{1}}。