以下内容的出发点是Win10系统!!!
当一个软件安装到系统上时会是以下两个地址的其中一个:
①:Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\
②:Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
例如安装google浏览器到系统里,就会在①的注册表地址里看到Chrome.exe的信息(如下图)。
而对于例如Tencent这种公司下的软件在注册表里的地址如下:
由以上两幅图我们可以得出软件都是安装在Computer\HKEY_CURRENT_USER\Software\
这个文件夹下的。不过是Tencent软件是自创文件夹,而Google是注册到了Microsoft文件夹下的,综上所述:所有的软件都应该可以在HKEY_CURRENT_USER\Software
下或者HKEY_LOCAL_MACHINE\SOFTWARE
下找到。
下面简述下C#代码如何判断一个软件是否在系统里存在:
//此代码用来检查Chrome.exe是否在系统中存在;
private bool checkApp(string appname)
{
bool LocalMachine = false;
bool CurrentUser = false;
Microsoft.Win32.RegistryKey LocalMachineCode = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths");
Microsoft.Win32.RegistryKey CurrentUserCode = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths");
foreach (string subKeyName in LocalMachineCode.GetSubKeyNames())
{
if (subKeyName.Contains(appname))
{
LocalMachine= true;
}
}
foreach (string subKeyName in CurrentUserCode.GetSubKeyNames())
{
if (subKeyName.Contains(appname))
{
CurrentUser = true;
}
}
if (LocalMachine|| CurrentUser)
{
return true;
}
return false;
}
此方法运行结果为True
时即为系统中存在Google浏览器,False
即为不存在。
以上均为我的理解,如有不足欢迎留言!