我有一个ASP.Net应用程序,我想运行几个需要提升权限的(BAT)脚本,因为它必须启动和停止服务,复制文件等......
我尝试应用不同的方法,但我找不到有效的方法。
这是来自ASP.Net c#的代码:
var securePass= new SecureString();
string password = "AdminPassword";
for (int x = 0; x < password.Length; x++)
{
pass.AppendChar(password[x]);
}
Process p = new Process();
p.StartInfo.FileName = Path.Combine(appPath, "Scripts", "ServiceTest.bat");
p.StartInfo.Arguments = "";
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UserName = adminUserName;
p.StartInfo.Domain = adminDomain;
p.StartInfo.Password = securePass;
p.StartInfo.Verb = "runas";
p.Start();
p.WaitForExit();
这是ServiceTest.bat:
NET START MSSQL$SQLEXPRESS
不起作用:如果我删除“p.StartInfo.CreateNoWindow”和“p.StartInfo.RedirectStandardOutput”行,控制台窗口会显示“Access denied”错误,执行“NET START MSSQL $ SQLEXPRESS”。
我尝试使用文件名“ cmd.exe ”和“/ c”+ Path.Combine(appPath,“Scripts”,“ServiceTest.bat”)作为争论,以及几种方式,但它不起作用。
有什么建议吗?
谢谢你的时间!
答案 0 :(得分:1)
您必须使用不同的凭据。为此使用RunAs或PSExec
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
https://techtorials.me/windows/using-runas-with-a-password/
E.g.
PsExec64.exe \\<local machine Name> -u Domain\Administrator -p <Password> "<Script Name>"