【发布时间】:2014-11-03 17:56:25
【问题描述】:
我尝试this,this 以编程方式卸载应用程序。我没有收到任何错误或异常,但应用程序没有从我的机器上卸载。也请查看尝试过的代码
public static string GetUninstallCommandFor(string productDisplayName)
{
RegistryKey localMachine = Registry.LocalMachine;
string productsRoot = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products";
RegistryKey products = localMachine.OpenSubKey(productsRoot);
string[] productFolders = products.GetSubKeyNames();
foreach (string p in productFolders)
{
RegistryKey installProperties = products.OpenSubKey(p + @"\InstallProperties");
if (installProperties != null)
{
string displayName = (string)installProperties.GetValue("DisplayName");
if ((displayName != null) && (displayName.Contains(productDisplayName)))
{
string uninstallCommand =(string)installProperties.GetValue("UninstallString");
return uninstallCommand;
}
}
}
return "";
}
请帮助我使用 C# 以编程方式卸载应用程序。
【问题讨论】:
-
您是否尝试调试以查看您的
productDisplayName字符串是否曾经在您的循环中匹配?您是否尝试过调试?通过这样做,您可以打印每个产品的名称并搜索您的名称是否正确(错字、空格替换为下划线等...)。 -
@Kilazur 是的,它匹配并进入 if 条件,但未卸载 safari。请帮助我。
-
那么你如何处理
uninstallCommand?它看起来像什么? -
正如@Alex 指出的那样,据我所知,此方法不会自行卸载。它返回一个
uninstallCommand,必须在其他地方使用它才能实际执行卸载。 -
@AlexK。你能告诉我如何执行卸载。
标签: c# .net visual-studio-2010