C#获取某个程序的卸载命令
Get Uninstall Command For a Certain Program in C#
所以我正在研究这段代码,returns 一个卸载命令字符串来卸载某个程序。
我在其他问题中看到过这段代码,但似乎没有人遇到与我相同的问题。
这是代码:
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 "";
}
此代码returns此错误:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
products was null.
我不知道products怎么会是空的,我确实检查了那个子项,里面全是文件夹,所以我该如何解决这个问题。
为 X64 构建。在 32 位进程中,您实际上正在阅读 HKEY_LOCAL_MACHINE\Software\Wow6432Node
到 registry redirection。
或者您可以请求注册表的非重定向视图:
Avoid Registry Wow6432Node Redirection
所以我正在研究这段代码,returns 一个卸载命令字符串来卸载某个程序。 我在其他问题中看到过这段代码,但似乎没有人遇到与我相同的问题。 这是代码:
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 "";
}
此代码returns此错误:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
products was null.
我不知道products怎么会是空的,我确实检查了那个子项,里面全是文件夹,所以我该如何解决这个问题。
为 X64 构建。在 32 位进程中,您实际上正在阅读 HKEY_LOCAL_MACHINE\Software\Wow6432Node
到 registry redirection。
或者您可以请求注册表的非重定向视图: Avoid Registry Wow6432Node Redirection