C# 使用WMI在远程系统上调用应用程序(具有参数的自定义应用程序)
我有一个自定义应用程序,可以安装或安装其他系统&我想使用WMI C#从这个系统调用它,而不需要任何批处理文件 此外,该应用程序还需要运行命令参数。那么,有谁能指导我该编写什么代码呢 我已经尝试了一些我粘贴在这里的东西(代码片段),供您参考,在Notepad.exe或Calc.exe运行的情况下效果很好。 事实上,在我的自定义应用程序中,它也适用于我,不带参数,但不带参数。当我传递参数时,它会在2秒后启动并终止。这意味着它不能以良好/正确的格式传递参数C# 使用WMI在远程系统上调用应用程序(具有参数的自定义应用程序),c#,wmi,remote-access,C#,Wmi,Remote Access,我有一个自定义应用程序,可以安装或安装其他系统&我想使用WMI C#从这个系统调用它,而不需要任何批处理文件 此外,该应用程序还需要运行命令参数。那么,有谁能指导我该编写什么代码呢 我已经尝试了一些我粘贴在这里的东西(代码片段),供您参考,在Notepad.exe或Calc.exe运行的情况下效果很好。 事实上,在我的自定义应用程序中,它也适用于我,不带参数,但不带参数。当我传递参数时,它会在2秒后启动并终止。这意味着它不能以良好/正确的格式传递参数 private static uint Cr
private static uint CreateProcess(ManagementScope connectionScope, string exeWithPathAndArguments)
{
try
{
var objectGetOptions = new ObjectGetOptions();
ManagementPath processPath = new ManagementPath("Win32_Process");
using (var processTask = new ManagementClass(connectionScope, processPath, objectGetOptions))
{
using (var methodInParams = processTask.GetMethodParameters("Create"))
{
methodInParams["CommandLine"] = exeWithPathAndArguments;
using (var methodOutParams = processTask.InvokeMethod("Create", methodInParams, null))
{
var err = (uint)methodOutParams["returnValue"];
if (err != 0)
{
var info = "see http://msdn.microsoft.com/en-us/library/windows/desktop/aa389388(v=vs.85).aspx";
switch (err)
{
case 2: info = "Access Denied"; break;
case 3: info = "Insufficient Privilege"; break;
case 8: info = "Unknown failure"; break;
case 9: info = "Path Not Found"; break;
case 21: info = "Invalid Parameter"; break;
default: info = "Unknown(Code)"; break;
}
var msg = "Failed to Start the Process, error = " + methodOutParams["returnValue"] + " (" + info + ")";
throw new Exception(msg);
}
return (uint)methodOutParams["processId"];
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
我已经知道PSExec,但我不想使用它。同时,我不想使用批处理文件来运行我的命令。只想使用直接命令传递方式来运行应用程序。
我的应用程序位置不在路径目录中。所以,显然我需要提供一个完整的路径,比如
CreateProcess(connectionScope,exewithPath和arguments.Trim());
其中exeWithPathAndArguments将是“/”C:\Program files(x86)\Company\Application Folder\app.exe/“-argsName argvalue”AddmethodInParams[“CurrentDirectory”]=where-ToStartApp代码>和删除-argsName
因此,您的exwithpath和arguments将是:
\“C:\\\\ProgramFiles(x86)\\\\Company\\\\Application Folder\\\\app.exe\”argvalue