问题描述
我试图psexec到远程计算机。当我在本地计算机上的cmd中键入psexec \\192.168.180.148 -u xxxxx -p xxxxx net localgroup Administrators testuser /add
并将testuser
添加到远程计算机的Admin组中时,它可以完美工作。但是,当运行此C#代码时,什么也没发生。
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.processstartinfo startInfo = new System.Diagnostics.processstartinfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C psexec \\192.168.180.148 -u xxxxx -p xxxxx net localgroup Administrators testuser /add";
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
解决方法
是的,我从IIS中的ASP.NET运行此代码。
即使从本地计算机的角度来看,默认的AppPool帐户也做不了多少。通常,他们只能访问网站文件夹中的文件,而不能说c:\temp
。
psexec
在目标计算机上具有管理员权限,这很可能使您的IIS站点的帐户不满意。要解决此问题,请更改您启动子进程 或 将整个IIS网站AppPool的帐户更改为具有管理员权限的帐户在远程计算机上。维护后者,这样做会整体上影响您的网站,因此需要检查所有Windows身份验证样式的连接(例如与数据库的连接)。
-
在Windows 开始提示符下输入
- 选择您的服务器并展开应用程序池节点
- 找到您的AppPool,右键单击并选择高级设置
inetmgr
,打开 IIS管理器
- 在身份行上,单击 ...
- 在应用程序池标识窗口中,选择自定义帐户
- 点击设置...
- 在远程计算机上填写具有管理员权限的帐户字段。如果该帐户是本地帐户,则需要手动将其复制到IIS框中。还要检查此帐户是否可以访问您的常规IIS资源,例如文件系统文件夹。
如果不确定您的网站正在使用哪个应用程序池,则可以按照以下说明进行查找: