Windows Management Instrumentation msi install remote machine

匿名 (未验证) 提交于 2019-12-03 01:46:01

问题:

I'm trying to install a msi on a remote machine , i changed DCOM Config to get access from my machine when using methode install of win32_product it fails with return output 1601 ( that means that Windows Installer service could not be accessed ) i did some research in the net , and run the service manually using services.msc and did msiexec / unreg and msiexec /register , still not working ps: both machines a running on windows 10 here is my code

Ps : i used the same code for win32_Bios to get SerialNumber and it works

try          { \\machine is the name of the computer              string PackageLocation = @"\\" + machine + msi;              ConnectionOptions connection = new ConnectionOptions();              connection.Username = username;              connection.Password = password;              connection.Impersonation = ImpersonationLevel.Impersonate;              connection.Authentication = AuthenticationLevel.Default;             connection.EnablePrivileges = true;             //define the WMI root name space              ManagementScope scope =              new ManagementScope(@"\\" + machine + @"\root\CIMV2", connection);              //define path for the WMI class              ManagementPath p =              new ManagementPath("Win32_Product");              //define new instance              ManagementClass classInstance = new ManagementClass(scope, p, null);               // Obtain in-parameters for the method              ManagementBaseObject inParams = classInstance.GetMethodParameters("Install");              // Add the input parameters.              inParams["AllUsers"] = true; //to install for all users              inParams["Options"] = ""; //paramters must be in the format “property=setting“             inParams["PackageLocation"] = @"c:\install\installer.msi"; //source file must be on the remote machine             // Execute the method and obtain the return values.              ManagementBaseObject outParams = classInstance.InvokeMethod("Install", inParams, null);              // List outParams              string retVal = outParams["ReturnValue"].ToString();              string msg = null;              switch (retVal)              {                 case "0":                      msg = "The installation completed successfully.";                      break;                  case "2":                      msg = "The system cannot find the specified file. \n\r\n\r" + msi;                      break;                  case "3":                      msg = "The system cannot find the path specified. \n\r\n\r" + msi;                      break;                  case "1619":                      msg = "This installation package \n\r\n\r " + msi + "\n\r\n\rcould not be opened, please verify that it is accessible.";                      break;                  case "1620":                      msg = "This installation package \n\r\n\r " + msi + "\n\r\n\rcould not be opened, please verify that it is a valid MSI package.";                      break;                  default:                      msg = "Please see... \n\r\n\r http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/error_codes.asp \n\r\n\rError code: " + retVal;                      break;             }              // Display outParams              Console.WriteLine(msg, "Installation report");         }         catch (ManagementException me)          {             Console.WriteLine(me.Message + "Management Exception");         }         catch (COMException ioe)          {             Console.WriteLine(ioe.Message, "COM Exception");         }     } 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!