C# 以管理员身份运行命令行程序
我需要以管理员身份运行此程序C# 以管理员身份运行命令行程序,c#,command-line,admin,C#,Command Line,Admin,我需要以管理员身份运行此程序 string cname = Environment.UserDomainName + "\\" + Environment.UserName; string resetTrust = "netdom /resetpwd /s:server01 /ud:" + cname + "/pd:" + textBoxPassword.Text.Trim(); String output = ExecuteCommandAsAdmin(resetTrust); Message
string cname = Environment.UserDomainName + "\\" + Environment.UserName;
string resetTrust = "netdom /resetpwd /s:server01 /ud:" + cname + "/pd:" + textBoxPassword.Text.Trim();
String output = ExecuteCommandAsAdmin(resetTrust);
MessageBox.Show(output);
下面是ExecuteCommandAsAdmin方法
public static string ExecuteCommandAsAdmin(string command)
{
string cname = Environment.UserDomainName + "\\" + Environment.UserName;
ProcessStartInfo procStartInfo = new ProcessStartInfo()
{
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
FileName = "runas.exe",
Arguments = "/user:" + cname + "\"cmd /K " + command + "\""
};
using (Process proc = new Process())
{
proc.StartInfo = procStartInfo;
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
if (string.IsNullOrEmpty(output))
output = proc.StandardError.ReadToEnd();
return output;
}
}
如果你知道更好的方法,请告诉我。我没有存储密码。只是传递它以便执行它。如果错误的人输入了错误的密码,因为他们不是管理员,所以不会发生任何事情
谢谢使用
运行方式/用户:name@domaincmd
我看不出有问题。。。你没有硬编码任何东西。这可能不是一个合法的问题,因为您没有编码问题。您正在征求更多意见。可能的重复定义您以管理员身份运行的含义。管理员是一个用户或其中包含用户的组。并不是所有的命令都是用“标准”帐户执行的。那么它是哪一个呢?您必须选择一个用户。内置的管理员
?不管怎样,我认为你做错了。我认为您需要使用runas
动词来提升,或者使用清单在启动时强制提升,或者将其释放到具有该清单的可执行文件。为什么您选择尝试使用runas.exe
?