如何在Windows XP上以管理员身份运行另一个应用程序

6
我使用应用程序清单文件,如此网址所述,让我的应用程序的一部分具有提升的权限(它需要这种权限)
因此,在需要时,主程序只需通过Process.Start调用一个小型程序集,该程序集然后处理需要管理员权限的任务。
然而,在Windows XP上我该如何做同样的事情?
在XP上似乎忽略了这个清单,并在当前用户环境中运行这个小程序集。
3个回答

10

以下代码来自这里,正好满足我的需求:

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上正常工作。

更新:
参见类似问题的这个答案。基本上是相同的代码,只是使用参数而已。


问题在于XP SP3的Runas对话框默认勾选了当前用户运行,甚至勾选了“保护计算机和数据免受未经授权的程序活动”的选项 - 这实际上会降低权限! - eug
@eug:这是一个相当古老的话题,但我今天在Windows XP下遇到了同样的问题。请删除“processStartInfo.Verb =“runas”;”,但在Windows 7+(未在Vista下检查)中保留它。 - Nolmë Informatique

3

Windows XP没有UAC。

您需要使用具有管理特权的用户的登录凭据调用Process.Start


3
你可以使用 runas 命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接