我是C#编码的新手,请跟我帮忙,谢谢你提前.. !!!
我正在尝试关注:
我正在开发小型C#app以在远程服务器上执行批处理文件,以下是我的代码,我的大多数服务器都是Windows 2008 64位,如果我进入服务器RDP,我可以执行批处理文件而没有任何错误,但是当我尝试通过以下代码来完成它,它不起作用,没有抛出异常,但没有结果。
我的批处理文件包含以下命令:
@ECHO off
echo Running Remote Commands
date/t
time /t
COPY "\\xt0022\I$\abc\RemoteProcess\testcopy.bat" D:\ab\
date/t
time /t
-
try
{
string remotemachine = "Server1";
object[] theProcessToRun = { "D:\\ab\\test2.bat" };
ConnectionOptions theConnection = new ConnectionOptions();
theConnection.Impersonation = ImpersonationLevel.Impersonate;
theConnection.EnablePrivileges = true;
ManagementScope theScope = new ManagementScope("\\\\" + remoteMachine + "\\root\\cimv2", theConnection);
ManagementClass theClass = new ManagementClass(theScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
theClass.InvokeMethod("Create", theProcessToRun);
}
catch (Exception ex)
{
}
如果我调试代码,它会显示“Derivation = Function evaluation out out out。”
我是否必须使用RUNAS进行此操作..?如果是..任何人都可以帮助我使用这些代码或方法..?
谢谢大家..!
答案 0 :(得分:1)
您是否查看了ProcessStartInfo?
ProcessStartInfo startInfo = new ProcessStartInfo("PsExec.exe");
startInfo.Arguments = @"\\<computername -u <username> -p <password> -i c:\\test.bat";
Process.Start(startInfo);
这是CodeProject.com上的一个artice,它使用WMI创建一个远程进程,就像你做的那样。完整的来源可用。
http://www.codeproject.com/Articles/31113/Create-a-Remote-Process-using-WMI-in-C
这可能是一个愚蠢的问题,但你的超时设置是什么?如果它太小,那可能是原因。