【问题标题】:How to run another app as administrator on Windows XP如何在 Windows XP 上以管理员身份运行另一个应用程序
【发布时间】:2011-06-10 14:16:15
【问题描述】:

我使用here 所述的应用程序清单文件让我的应用程序的一部分以提升的权限(它需要)运行。
因此,当需要时,主程序只需使用 Process.Start 调用一个小程序集,然后它会处理需要管理员权限的任务。

但是,我怎样才能在 Windows XP 上做同样的事情呢?
似乎 XP 只是忽略了这个清单并在当前用户上下文中运行小程序集。

【问题讨论】:

    标签: c# .net windows-xp uac elevation


    【解决方案1】:

    来自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。这基本上是相同的代码,只是使用了参数。

    【讨论】:

    • 问题是 XP SP3 的 Runas 对话框默认以当前用户的身份运行,甚至勾选“保护我的计算机和数据免受未经授权的程序活动” - 这实际上降低了权限!
    • @eug :相当老的话题,但我今天在 Windows XP 下遇到了同样的问题。删除 'processStartInfo.Verb = "runas";'但保留它用于 Windows 7+(未在 Vista 下检查)
    【解决方案2】:

    Windows XP 没有 UAC。

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

    【讨论】:

      【解决方案3】:

      您可以使用runas 命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-24
        • 2014-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 2010-12-19
        • 1970-01-01
        相关资源
        最近更新 更多