すべて、ソフトウェアをリモートでアンインストールしようとしています。テスト マシンでは問題なく動作していますが、実稼働サーバーでは問題が発生しました。Windows XP、Windows 2003 サーバー、
実稼働マシン: Windows Server 2003.
このエラーの原因は何でしょうか。どんな助けでも大歓迎です。リモート PC でソフトウェアをアンインストールする他の方法がある場合は、共有してください。
public void Uninstallwithguid(string targetServer, string product,string guid, string version)
{
this.Project.Log(Level.Info, "Starting Uninstall " );
this.Project.Log(Level.Info, "targetServer :" + targetServer );
this.Project.Log(Level.Info, "product :" + product );
this.Project.Log(Level.Info, "guid :" + guid );
this.Project.Log(Level.Info, "version :" + version );
System.Management.ConnectionOptions connoptions = new System.Management.ConnectionOptions();
connoptions.Impersonation = System.Management.ImpersonationLevel.Impersonate;
connoptions.Timeout = new TimeSpan(0, 0, 10); // 10 seconds
System.Management.ManagementScope scope = new System.Management.ManagementScope(@"\\" + targetServer + @"\root\cimv2", connoptions);
scope.Connect();
System.Management.ObjectGetOptions objoptions = new System.Management.ObjectGetOptions();
string test = @"\\" + targetServer + @"\root\cimv2";
string objPath = string.Format("Win32_Product.IdentifyingNumber='{0}',Name='{1}',Version='{2}'",guid, product, version);
System.Management.ManagementPath path = new System.Management.ManagementPath(objPath);
System.Management.ManagementObject moobj = new System.Management.ManagementObject(scope, path, null);
UInt32 res1 = 0;
try
{
res1 = (UInt32)moobj.InvokeMethod("Uninstall", null);
}
catch(Exception ex)
{
this.Project.Log(Level.Error, ex.ToString());
throw ex;
}
if (res1 != 0)
{
this.Project.Log(Level.Error, "Uninstall error " + res1.ToString());
throw new Exception("Uninstall error " + res1.ToString());
}
}
エラーの説明:
System.Management.ManagementException: System.Management.ManagementObject.GetMethodParameters の System.Management.ManagementObject.get_ClassPath() の System.Management.ManagementObject.Initialize(Boolean getObject) の System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) の無効なクラス(String methodName, ManagementBaseObject& inParameters, IWbemClassObjectFreeThreaded& inParametersClass, IWbemClassObjectFreeThreaded& outParametersClass) System.Management.ManagementObject.InvokeMethod(String methodName, Object[] args) で