在Win32_Process上远程运行msiexec

本文关键字:运行 msiexec 程运行 Win32 Process | 更新日期: 2023-09-27 18:06:44

这一小部分的主要任务是获得一些计算机名称并在这台PC上安装所需的软件(通过msiexec.exe)

我做这个

    {                       
            Credential creds = new Credential();
            UserAttr UserCredential = new UserAttr();
            UserCredential = creds.DefaultFlagsTest();              
            ConnectionOptions connection = new ConnectionOptions();
            connection.Username = UserCredential.UserName;
            connection.Password = UserCredential.password;
            connection.Authentication = AuthenticationLevel.PacketPrivacy; 
            connection.Authority = "ntlmdomain:tcc1";
            ManagementScope scope = new ManagementScope(
                "''''"+computerName+"''root''CIMV2", connection);
            scope.Connect();
            ManagementClass classInstance =
                new ManagementClass(scope,
                new ManagementPath("Win32_Process"), null);
            ManagementBaseObject inParams = classInstance.GetMethodParameters("Create");
            inParams["CommandLine"] = @"msiexec.exe /qb /m log.mif /i ""''tcc1-pgh10.tcc1.local'swshare$'Packages'NetAgent_10.0.3361'exec'Kaspersky Network Agent.msi""";       
            ManagementBaseObject outParams = classInstance.InvokeMethod("Create", inParams, null);
            int res = int.Parse(outParams["ReturnValue"].ToString());
            if (res == 0)
            {
                MessageBox.Show(outParams["ReturnValue"].ToString(), "Result");                   
            }
            else throw new System.ComponentModel.Win32Exception(res);             
            Close();           
    }

程序返回0,但这并不意味着msiexec以同样的成功完成。错误是检查包的路径。或smth。但是我在日志文件log.mif:

中看到的是

..............................
START属性
NAME = "Product"
ID = 2
ACCESS = READ-ONLY
STORAGE = SPECIFIC
TYPE = STRING(64)
VALUE = "'tcc1-pgh10.tcc1.local'swshare$'Packages'NetAgent_10.0.3361'exe"
终端属性
..............................

将包的名称裁剪为64个符号。原因是Win32_Process的CommandLine参数。Create有这个限制。我不知道该如何克服……

Win32_Process。Create还有属性CurrentDirectory,这似乎可以解决这个问题。但是他不能处理UNC路径。

和我不能做更短的安装目录。这是不对的。我可以说我已经做到了。它起作用了)

请,也许你知道如何解决这个问题与长安装路径?

在Win32_Process上远程运行msiexec

我放弃了

START ATTRIBUTE 
NAME = "Product" 
ID = 2 
ACCESS = READ-ONLY 
STORAGE = SPECIFIC 
TYPE = STRING(64) 
VALUE = "'tcc1-pgh10.tcc1.local'swshare$'Packages'NetAgent_10.0.3361'exe"
END ATTRIBUTE

取值限制为64symb,包括path。它只能在本地机器上正常工作,而不使用UNC路径