1

我正在尝试使用REBOOT=ReallySuppress命令行参数卸载 C# 中的程序,但 Windows 进程监视器(Rohitab 的 API 监视器)显示我所需的命令行参数实际上并未传递给 msiexec.exe。我的代码有缺陷吗?

public static List<ManagementObject> programs;       

public void Uninstall(int index)
{
    object[] args = {"REBOOT=ReallySuppress", "REMOVE=ALL"};
    programs[index].InvokeMethod("Uninstall", args);
}

...

程序列表在代码中的其他地方初始化并且工作正常。API Monitor 显示 msiexec.exe 进程使用以下参数启动:

"C:\Windows\SysWOW64\\msiexec.exe" /i "C:\Users\Joel Denning\AppData\LocalLow\Sun\Java\jre1.7.0_45.msi" /qn METHOD=joff

它没有我传入的REBOOT=ReallySuppressorREMOVE=ALL参数。

4

1 回答 1

0

底层类型是 Win32_Product。此类的方法卸载没有参数。 http://msdn.microsoft.com/en-us/library/aa393941(v=vs.85).aspx

所以你的代码在语法上似乎没问题。

请参阅如何在不重新启动的情况下卸载程序

于 2013-11-22T19:26:51.100 回答