我正在尝试使用WMI在远程计算机上安装msi,我遇到了一些我无法弄清楚的问题。
当我在运行的本地计算机的WMI连接上使用以下代码时,它可以正常工作。但是,当我将连接更改为远程计算机时,它会在
处抛出ManagementException object res = installer.InvokeMethod("Install", methodArgs);
显示“未找到”消息。
我已经验证了与远程计算机的WMI连接工作正常并且msi文件位置正确。
try
{
ManagementClass installer = new ManagementClass(scope, new ManagementPath("Win32_Product"), new ObjectGetOptions());
object[] methodArgs = { @"C:\Deploy\Deploy.msi", @"TARGETDIR=C:\", true };
object res = installer.InvokeMethod("Install", methodArgs);
if ((UInt32)res != 0)
throw new Exception("Install error " + res.ToString());
else
project.Log(Level.Info, "Succesfully installed {0}", msi);
}
catch (Exception ex)
{
project.Log(Level.Error, ex.ToString());
}
有什么想法吗?
答案 0 :(得分:3)
我已经明白了;
我尝试安装的机器运行的是Server 2003,默认情况下没有安装Windows Install Provider。 (link)
我将目标计算机更改为运行Windows 7的计算机,并且运行正常。
答案 1 :(得分:1)
我记得我必须使用以下格式来启动这个过程:
ManagementClass theClass = new ManagementClass(@"\\server\root\cimv2:Win32_Process");