2013-02-28 107 views
0

我有一个应用程序(称为“启动器”),在那里我可以启动其他应用程序启动进程作为管理员

一本应用的需要管理员权限。如果我尝试从启动器启动它,我会得到一个异常,这说明我需要更高的权限。

开始从启动的应用程序的代码看起来像:

try 
{ 
    ProcessStartInfo startInfo = new ProcessStartInfo(PATH, ARGUMENT) 
     { 
     WorkingDirectory = WORKINGDIRECTORY 
     }; 
    Process.Start(startInfo); 
} 
catch(Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

如果我开始启动,一切工作正常。但我不想每次都以管理员身份启动Launcher。

如何以管理员身份从非管理员进程启动新进程?

+1

你看过app.manifest文件吗? http://msdn.microsoft.com/en-us/library/bb756929.aspx – 2013-02-28 09:10:26

+0

将动词设置为“runas”的解决方案对我无效 – Tomtom 2013-02-28 09:15:07

回答

0

您的应用程序需要是管理员,或者您需要提供用户名密码。对于用户名/密码的方式,请参阅:

https://groups.google.com/forum/?fromgroups=#!msg/microsoft.public.dotnet.languages.csharp/u5YuEz416R8/1oTRvUUzKj4J

这有更多的你正在寻找一种方法,但它不是代码一个不错的小片断,你可能会喜欢。

Process.Start with different credentials with UAC on

否则,将它添加到您的应用程序清单文件。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
+0

但我不想以管理员身份始终运行Launcher 。 – Tomtom 2013-02-28 09:22:00

+0

出于安全原因,如果不向管理员帐户提供用户名和密码,则无法执行此操作。只有当原始应用程序是admin时,才可以使用runas动词。 – Corylulu 2013-02-28 09:27:10

+0

我认为有可能以管理员身份启动其他应用程序,然后出现uac-message? – Tomtom 2013-02-28 09:30:50

0

创建具有管理员权限的帐户,然后用管理员帐户对应的值填充在ProcessStartInfo实例UserNamePassword性能。

+0

我无法创建帐户,因为该工具在网络中的其他计算机上执行。 – Tomtom 2013-02-28 09:26:12

相关问题