我一直在测试(过去 4 天)在 iis7(asp.net)下启动进程的各种选项
我确实找到了解决方案。
只要我们不需要与桌面交互,只需要运行cmd
(或类似的东西),解决方案就很简单:
w3wp
用户->
应该是高权限用户。进程启动信息 (
StartInfo.Username
)也->
应该是高权限用户。
但是,有一个问题(根据我的测试):
两个用户必须相同(如果我们要
cmd
执行)!这是唯一可行的方法。
所以这是我的两个问题:
为什么它们必须相同?w3wp HighPrivileged不能作为HighPrivileged
USerA
运行(通过 process.startInfo)吗?cmd
USerB
两个用户都是域管理员。(他们也是我本地组中的管理员)。只有域管理员/本地管理员可以在本地机器上运行进程吗?
ps 所有文件夹权限都是everyone : full controll
(包括c:\windows\*.* /s
并包括 cmd.exe 权限),如上所述,两个用户都是本地计算机上的管理员,具有相同的克隆权限。IIS7 处理程序映射*
[静态文件] 设置为读取+执行
此外,完整的 cmd 命令是:
cmd /c time /t >c:\1.txt
. 如果文件存在,则成功。(我成功,仅当两个帐户相同时)。
完整代码:
Process proc = new Process();
proc.StartInfo.FileName = "cmd";
proc.StartInfo.UserName = "Royin"; //<-- only if this user is the same as w3wp user , the operation succeed !
proc.StartInfo.Domain = ...;
proc.StartInfo.WorkingFolder = @"c:\windows\system32";
proc.StartInfo.Password = ...
proc.StartInfo.Arguments = @"/c time /t >c:\1.txt"
proc.Start();