在C#中如何以管理员身份执行命令?

keepfool 2013-01-23 08:12:34

以下是来自网络的一段代码。在C#中执行DOS命令。
但是在win7中由于存在UAC控制,即使当前用户是管理员,在默认情况下执行命令都是以普通用户身份去执行的。
问题如题。

public static string Execute(string dosCommand, int milliseconds)
{
string output = ""; //输出字符串
if (dosCommand != null && dosCommand != "")
{
Process process = new Process(); //创建进程对象
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe"; //设定需要执行的命令
startInfo.Arguments = "/C " + dosCommand; //设定参数,其中的“/C”表示执行完命令后马上退出
startInfo.UseShellExecute = false; //不使用系统外壳程序启动
startInfo.RedirectStandardInput = false; //不重定向输入
startInfo.RedirectStandardOutput = true; //重定向输出
startInfo.CreateNoWindow = true; //不创建窗口
process.StartInfo = startInfo;
try
{
if (process.Start()) //开始进程
{
if (milliseconds == 0)
process.WaitForExit(); //这里无限等待进程结束
else
process.WaitForExit(milliseconds); //这里等待进程结束,等待时间为指定的毫秒
output = process.StandardOutput.ReadToEnd();//读取进程的输出
}
}
catch
{
}
finally
{
if (process != null)
process.Close();
}
}
return output;
}
...全文
202 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
FINALBEGINNER 2014-10-30
设定ProcessStartInfo.UserName和ProcessStartInfo.Password属性即可 注意这里的password必须要使用SecureString类型的字符串
  • 打赏
  • 举报
回复
dylike 2013-01-23
(1)进入项目属性页。 (2)选择“安全性”栏目。 (3)将“启用ClickOnce安全设置”勾选上。   现在,在Properties目录下就自动生成了app.manifest文件,打开该文件,将trustInfo/security/requestedPrivileges节点的requestedExecutionLevel的level的值修改为requireAdministrator即可。如下所示: <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> 编译
  • 打赏
  • 举报
回复
蒋晟 2013-01-23
startInfo.Verb = "runas";
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2013-01-23 08:12
社区公告

让您成为最强悍的C#开发者