我編寫了一個程序,使用C#中的ManagementObject自動卸載一些程序。它工作正常,除了某些程序會自動重新啓動計算機,並且這會破壞我程序的目的。有沒有什麼辦法可以讓它等到一切都完成卸載重新啓動?如何在不重新啓動的情況下卸載程序
這裏是實際卸載程序的方法:
static void UninstallProduct(string path)
{
ManagementObject product = new ManagementObject(path);
if ((product != null) && (product.Path.ClassName == "Win32_Product"))
{
Console.WriteLine(
"Uninstalling: "
+ product.GetPropertyValue("Name")
+ "...");
object result = product.InvokeMethod("Uninstall", null);
Console.WriteLine(
"The Uninstall method result is {0}",
result.ToString());
}
}
我對ManagementObject類不熟悉,所以我沒有把它寫成實際的答案。在使用Windows Installer之後,我建議您看看是否有一個標誌告訴對象不要讓安裝程序重新啓動系統,並且如果有可以在返回值中查找的標誌,告訴您安裝需要重啓完成。這就是Windows Installer的工作原理。然後,一旦所有程序都被卸載,如果需要重新啓動,則可以強制系統重新啓動。 – RobH