Windows Embedded POSReady 2009上的C#Process.Start()管理员权限

时间:2014-03-24 17:14:59

标签: c# windows privileges administrator

我正在尝试使用System.Diagnostic的{​​{1}}调用某些C#代码中具有管理员权限的批处理文件,如下所述: How to start a Process as administrator mode in C#

我从提升的命令提示符以及Process.Start()调用构建的可执行文件。在我的程序之外调用时,子进程成功,但在我的程序调用时,它的管理员任务失败。

我尝试过使用清单并设置runas /user:administrator program.exe,但没有运气。

子进程安装驱动程序,我的程序验证版本号是否相关。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

确保您的应用程序的清单中包含以下行:

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

您的应用程序将在与其自身相同的高程级别生成其他进程。这意味着如果您的应用程序以非管理员身份运行,那么它产生的每个进程都将在没有管理权限的情况下运行。

在启动批处理文件之前,请确保您的父应用程序具有提升的权限。

答案 1 :(得分:0)

使用runas时,仅向可执行文件提供管理员权限,因此您无法直接调用批处理文件。您应该使用p.StartInfo.FileName = program.batp.StartInfo.FileName = "cmd.exe"来调用p.StartInfo.Arguments = " /C ..."而不是{{1}}。