我想在.NET中构建一个控制台应用程序,它只运行另一个具有提升权限的程序。这样我可以指出,例如,一个Flash的安装exe,向用户指向我的'runasadmin'exe发送快捷方式,用户可以更新Flash。
要运行的凭据和文件名将对用户隐藏(在已编译的exe中)
这是否安全,当然不是。但是,打击数百个用户工作站的想法正在让我们看看替代品:)
这可行吗?有人在这方面有经验吗?
答案 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();
}