Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# psexec在本地计算机上工作,但在远程计算机上没有任何操作_C#_Asp.net_Remote Server_Psexec - Fatal编程技术网

C# psexec在本地计算机上工作,但在远程计算机上没有任何操作

C# psexec在本地计算机上工作,但在远程计算机上没有任何操作,c#,asp.net,remote-server,psexec,C#,Asp.net,Remote Server,Psexec,我试图将psexec发送到远程计算机。当我键入psexec\\192.168.180.148-u xxxxx-p xxxxx net localgroup Administrators testuser/add to my cmd in local machine时,它可以很好地工作,testuser被添加到远程计算机上的Admin组中。但是当运行这个c代码时,什么都没有发生 System.Diagnostics.Process process = new System.Diagnostics.

我试图将psexec发送到远程计算机。当我键入psexec\\192.168.180.148-u xxxxx-p xxxxx net localgroup Administrators testuser/add to my cmd in local machine时,它可以很好地工作,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站点应用程序池的帐户作为一个整体更改为在远程计算机上具有管理员权限的帐户。规范后者,这样做会影响你的网站作为一个整体,所以任何Windows身份验证风格的连接,如数据库,都需要审查

通过在Windows开始提示下键入inetmgr打开IIS管理器 选择服务器并展开“应用程序池”节点 找到应用程序池,右键单击并选择“高级设置” 在标识行上,单击。。。 在“应用程序池标识”窗口中,选择“自定义帐户” 单击设置。。。 填写在远程计算机上具有管理员权限的帐户的字段。如果该帐户是本地帐户,则需要手动将其复制到IIS框中。还要检查此帐户是否有权访问您的常规IIS资源,如文件系统文件夹。 如果您不确定您的网站正在使用哪个应用程序池,您可以通过以下方式了解:


这个问题是关于ASP.NET的。请不要添加不相关的标记。为什么要通过cmd.exe执行psexec?为什么不直接执行psexec呢?此外,我认为在您第一次使用psexec时会弹出一个SysInternals许可协议-这里会是这种情况吗?尝试将-accepteula添加到参数中。我添加了-accepteula,但奇怪的是,这段代码是从ASP.NET运行的吗?我看到它被IIS中的某个人删除了?如果是这样,则应将asp.net标记还原到此问题,并确保您的AppPool用户帐户具有远程运行psexec的权限。默认的AppPool帐户不能执行很多操作,我在IIS中从ASP.NET运行此代码。我不知道约翰为什么把标签拿走。但无论如何,我认为如果我可以从cmd运行这些命令,并且它工作得很好,那么我也可以通过这段代码来运行它。关于AppPool account@MickyD,你能说得更具体些吗?谢谢,我可以确认选择你的服务器是我的远程服务器吗?我还停留在步骤7,错误是指定的用户名不存在否,我指的是IIS计算机。然后,我在远程服务器中有一个来自group admin的帐户user/1234。我在设置凭据步骤7中键入了该帐户,它说指定的用户名不存在。我想IIS计算机没有意识到该帐户。如果该帐户是本地帐户,则需要手动将其复制到IIS框中。如果该帐户不是域帐户,则需要在IIS框中使用与远程计算机上的帐户相同的密码重新创建该帐户。记住,这个答案只是为了让你走