使用提升的权限

时间:2017-11-08 12:37:03

标签: c# asp.net batch-file service elevated-privileges

我有一个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”)作为争论,以及几种方式,但它不起作用。

有什么建议吗?

谢谢你的时间!

1 个答案:

答案 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>"