【发布时间】:2011-06-10 14:16:15
【问题描述】:
我使用here 所述的应用程序清单文件让我的应用程序的一部分以提升的权限(它需要)运行。
因此,当需要时,主程序只需使用 Process.Start 调用一个小程序集,然后它会处理需要管理员权限的任务。
但是,我怎样才能在 Windows XP 上做同样的事情呢?
似乎 XP 只是忽略了这个清单并在当前用户上下文中运行小程序集。
【问题讨论】:
标签: c# .net windows-xp uac elevation
我使用here 所述的应用程序清单文件让我的应用程序的一部分以提升的权限(它需要)运行。
因此,当需要时,主程序只需使用 Process.Start 调用一个小程序集,然后它会处理需要管理员权限的任务。
但是,我怎样才能在 Windows XP 上做同样的事情呢?
似乎 XP 只是忽略了这个清单并在当前用户上下文中运行小程序集。
【问题讨论】:
标签: c# .net windows-xp uac elevation
来自here 的以下代码正是我所需要的:
ProcessStartInfo processStartInfo = new ProcessStartInfo("path", "args");
processStartInfo.Verb = "runas";
using (Process process = new Process())
{
process.StartInfo = processStartInfo;
process.Start();
process.WaitForExit();
}
所以实际上你需要在 ProcessStartInfo.Verb 上设置“runas”。 使用随附的清单,此代码现在可以在 Windows XP、Vista 和 7 上正常运行。
更新:
另见this answer to a similar question。这基本上是相同的代码,只是使用了参数。
【讨论】:
Windows XP 没有 UAC。
您需要使用具有管理权限的用户的登录凭据调用Process.Start。
【讨论】:
您可以使用runas 命令。
【讨论】: