我有一个Web服务,我希望能够运行需要管理员权限的shell命令。 (该命令是DJOIN,用计算机帐户预先登录AD并创建文件。)
我正在测试如下:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
System.Security.SecureString ssPwd = new System.Security.SecureString();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = "/C echo %username% > c:\\test\\user.txt";
proc.StartInfo.Domain = "mydomain";
proc.StartInfo.UserName = "myadmin";
string password = "mypassword";
for (int x = 0; x < password.Length; x++)
{
ssPwd.AppendChar(password[x]);
}
proc.StartInfo.Password = ssPwd;
proc.Start();
Web服务器上的c:\ test文件夹具有正确的权限,如果我在不指定凭据的情况下运行它,则代码块运行正常。但是,当我添加它时,它会失败。
我也试过包括:
proc.StartInfo.Verb = "runas"
但这也不起作用。
如何以提升用户身份运行命令?
答案 0 :(得分:0)
我的工作方式是使用此代码:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
System.Security.SecureString ssPwd = new System.Security.SecureString();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = "/C echo %username% > c:\\test\\user.txt";
proc.StartInfo.Domain = "mydomain";
proc.StartInfo.Verb = "runas";
proc.StartInfo.UserName = "myadmin";
string password = "mypassword";
for (int x = 0; x < password.Length; x++)
{
ssPwd.AppendChar(password[x]);
}
proc.StartInfo.Password = ssPwd;
proc.Start();
还在IIS中设置应用程序池标识以使用此用户。