如何编译将以管理员身份启动exe的程序

时间:2010-07-16 19:06:24

标签: c# .net windows-xp

  

可能重复:
  Elevating process privilege programatically?

我想在.NET中构建一个控制台应用程序,它只运行另一个具有提升权限的程序。这样我可以指出,例如,一个Flash的安装exe,向用户指向我的'runasadmin'exe发送快捷方式,用户可以更新Flash。

要运行的凭据和文件名将对用户隐藏(在已编译的exe中)

这是否安全,当然不是。但是,打击数百个用户工作站的想法正在让我们看看替代品:)

这可行吗?有人在这方面有经验吗?

4 个答案:

答案 0 :(得分:3)

您知道,Microsoft已经提供了一个命令行实用程序来以不同的用户身份运行程序,包括管理员:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/runas.mspx?mfr=true

您可以创建一个执行RunAs的快捷方式,只需单击一下,即可执行相应的命令行参数和程序。

答案 1 :(得分:2)

尝试使用Windows API调用“CreateProcessWithLogonW” - 我已经从.Net中使用了这个并取得了很大的成功。

答案 2 :(得分:1)

听起来你在公司IT部门,在这种情况下,我想你可以创建对用户机器具有管理员权限的AD帐户。完成后,您可以创建一个P / Invokes到CreateProcessAsUser的.NET应用程序,以便在管理员帐户下启动所需的安装过程。

有关如何从.NET调用此方法的一些信息可以在here

找到

话虽如此,将软件推广到多台用户机器是一项常见的要求,并且有许多产品可供您使用。

答案 3 :(得分:1)

            System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo("path", "args");
        processStartInfo.Verb = "runas";

        using (System.Diagnostics.Process process = new System.Diagnostics.Process())
        {
            process.StartInfo = processStartInfo;
            process.Start();
            process.WaitForExit();
        }