C#与Windows系统软件安装的注册表间的关系理解

以下内容的出发点是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即为不存在。

以上均为我的理解,如有不足欢迎留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值