• Access 64-bit HKLMSoftware Registry by 32-bit C#.NET Application


    http://www.codeproject.com/Articles/1003177/Access-bit-HKLM-Software-Registry-by-bit-Csharp-NE

    While running 32-bit Windows application on a 64-bit windows OS, there is a registry redirection. Here, if 32-bit application tries to read a key under HKLMSoftware, then due to Registry redirection effective path becomes HKLMSoftwareWow6432Node. For example, we are running 64-bit and 32-bit application to read registry keys as HKLMSoftwarexyz and HKLMSoftwareWow6432Nodexyz.

    So by default, with an input of HKLMSoftware, 64-bit application will read HKLMSoftwarexyz while because of registry redirection 32-bit application will read HKLMSoftwareWow6432Nodexyz.

    In C#, to read 64-bit HKLMSoftware registry keys, we can use RegistryKey.OpenBaseKey method. This method takes two arguments- RegistryHive and RegistryView. Here, seperate registry views are present for 32-bit and 64-bit.

    Here is the sample C# code to read AppPaths for 32-bit and 64-bit applications installed on the system:

    try
                    {
                        string AppPath = @"SOFTWAREMicrosoftWindowsCurrentVersionApp Paths";
                        RegistryKey rkbase = null;
                        rkbase = RegistryKey.OpenBaseKey
                                 (Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
                        using (RegistryKey rk = rkbase.OpenSubKey(uninstallKey))
                        {
                            foreach (string skName in rk.GetSubKeyNames())
                            {
                                using (RegistryKey sk = rk.OpenSubKey(skName))
                                {
                                    try
                                    {
    
                                        if (sk.GetValue("Path") != null)
                                        {
                                            //add this to required list
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageBox.Show(ex.Message);
                                    }
                                }
                            }
                        }
    
                        if (Environment.Is64BitOperatingSystem)
                        {
                            using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(AppPath))
                            {
                                foreach (string skName in rk.GetSubKeyNames())
                                {
                                    using (RegistryKey sk = rk.OpenSubKey(skName))
                                    {
                                        try
                                        {
                                            if (sk.GetValue("Path") != null)
                                            {
                                                //add this to required list
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            MessageBox.Show(ex.Message);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
    

     Here, Environment.Is64BitOperatingSystem is used to check if the current system is 64-bit or not. This function is avialable with .NET Framework 4.0.

  • 相关阅读:
    DMZ区
    集群(cluster)和高可用性(HA)的概念
    JS禁用右键,禁用打印,防止另存为,IE浏览器识别(转载)
    window.open实现模式窗口(只弹出一个window.open)
    Textarea自适应高度 JS实现,兼容IE67891011
    JQ基础语法
    SQL 小笔记
    CSS样式笔记
    IE8下 Select文字垂直居中的办法
    汉字转全拼音函数优化方案(SQLServer),值得你看看
  • 原文地址:https://www.cnblogs.com/zeroone/p/4604164.html
Copyright © 2020-2023  润新知