zoukankan      html  css  js  c++  java
  • C# 操作注册表

    在Microsoft.Win32命名空间中提供了两个类来操作注册表:Registry类和RegistryKey类,并且这两个类都是密封类不允许被继承。

    Registry 类

    提供表示 Windows 注册表中的根项的 RegistryKey 对象,并提供访问项/值对的 static 方法。

    Registry 类还包含从注册表项设置和检索值的 staticGetValue 和 SetValue 方法。每次使用这两种方法时,它们都会打开和关闭注册表项,所以,当您访问大量值时,使用这两种方法不如使用 RegistryKey 类中的类似方法。

    RegistryKey 类还提供了可用来为注册表项设置 Windows 访问控制安全性的方法、可用来在检索值之前测试值的数据类型的方法以及删除项的方法。

    RegistryKey 类

    表示 Windows 注册表中的项级节点。 此类是注册表封装。

    RegistryKey.OpenSubKey 方法 (String) 以只读方式检索子项。

    RegistryKey.OpenSubKey 方法 (String, Boolean) 检索指定的子项,并指定是否将写访问权限应用于该项。

    必须先打开项才能用其他方法和属性对其进行操作。 要修改项,必须用适当的 OpenSubKey 方法重载打开所需的项,该重载应能允许指定写访问,例如,OpenSubKey(String, RegistryKeyPermissionCheck) 重载或 OpenSubKey(String, Boolean) 重载。

    如果找不到指定的子项,则返回 null

    要使用 OpenSubKey 方法,您必须拥有 RegistryKey 的实例。 要获取 RegistryKey 的实例,请使用 Registry 类的静态成员之一。

    View Code
    得到PC上安装的Word版本
    #region 得到PC上安装的Word版本
            /// <summary>
            /// 得到PC上安装的Word版本
            /// </summary>
            /// <returns></returns>
            private string GetWordVersion()
            {
                IList<string> ilistSubKeys = new List<string>();
                IList<string> ilistVersion = new List<string>();
                string[] OfficeVersionNames = new string[5] { "8.0", "9.0", "14.0", "11.0", "12.0" };//目前发行的office所有版本
                string[] OfficeExistVersion;//本地计算机上所有office版本
                string[] OfficeSubKeys;//本地计算机注册表Office目录下所有子项
                string OfficeCurrentVersion = "";//本地计算机安装的Office版本
                string OSVersion;//本地计算机操作系统版本
                OSVersion = GetOSVersion();
                if (OSVersion == "WIN 7")
                {
                    RegistryKey regkey = Registry.LocalMachine;
                    RegistryKey sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office");
                    foreach (string str in sys.GetSubKeyNames())
                    {
                        ilistSubKeys.Add(str);
                    }
                    OfficeSubKeys = ilistSubKeys.ToArray<string>();
                    for (int i = 0; i < OfficeSubKeys.Length; i++)
                    {
                        for (int j = 0; j < OfficeVersionNames.Length; j++)
                        {
                            if (OfficeSubKeys[i] == OfficeVersionNames[j])
                            {
                                ilistVersion.Add(OfficeSubKeys[i]);
                            }
                        }
                    }
                    OfficeExistVersion = ilistVersion.ToArray<string>();
                    for(int k=0;k<OfficeExistVersion .Length ;k++)
                    {
                        sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]);
                        foreach (string str in sys.GetSubKeyNames())
                        {
                            if (str == "Word")
                            {
                                sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]).OpenSubKey(@"Word").OpenSubKey(@"InstallRoot");
                                if (sys != null)
                                {
                                    OfficeCurrentVersion = OfficeExistVersion[k];
                                    break;
                                }
                            }
                        }
                    }
                }
                else if (OSVersion == "WIN XP")
                {
                    RegistryKey regkey = Registry.CurrentUser;
                    RegistryKey sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office");
                    foreach (string str in sys.GetSubKeyNames())
                    {
                        ilistSubKeys.Add(str);
                    }
                    OfficeSubKeys = ilistSubKeys.ToArray<string>();
                    for (int i = 0; i < OfficeSubKeys.Length; i++)
                    {
                        for (int j = 0; j < OfficeVersionNames.Length; j++)
                        {
                            if (OfficeSubKeys[i] == OfficeVersionNames[j])
                            {
                                ilistVersion.Add(OfficeSubKeys[i]);
                            }
                        }
                    }
                    OfficeExistVersion = ilistVersion.ToArray<string>();
                    for (int k = 0; k < OfficeExistVersion.Length; k++)
                    {
                        sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]);
                        foreach (string str in sys.GetSubKeyNames())
                        {
                            if (str == "Word")
                            {
                                sys = regkey.OpenSubKey(@"SOFTWARE").OpenSubKey(@"Microsoft").OpenSubKey(@"Office").OpenSubKey(OfficeExistVersion[k]).OpenSubKey(@"Word").OpenSubKey(@"Options");
                                if (sys != null)
                                {
                                    OfficeCurrentVersion = OfficeExistVersion[k];
                                    break;
                                }
                            }
                        }
                    }
                }
                else
                {
                    OfficeCurrentVersion = "11.0";
                }
                return OfficeCurrentVersion;
            }
            #endregion
    获取本地计算器操作系统版本
    /// <summary>
            /// 获取本地计算器操作系统版本
            /// </summary>
            /// <returns></returns>
            private string GetOSVersion()
            {
                Version ver = System.Environment.OSVersion.Version;
                string ClientOSVersion = "";
                if (ver.Major == 5 && ver.Minor == 1)
                {
                    ClientOSVersion = "WIN XP";
                }
                else if (ver.Major == 5 && ver.Minor == 0)
                {
                    ClientOSVersion = "WIN 2000";
                }
                else if (ver.Major == 6 && ver.Minor == 1)
                {
                    ClientOSVersion = "WIN 7";
                }
                else if (ver.Major == 6 && ver.Minor == 0)
                {
                    ClientOSVersion = "WIN Vista";
                }
                else
                {
                    ClientOSVersion ="未知";
                }
                return ClientOSVersion ;            
            }
            #endregion

    注:本文整理自MSDN!!!

  • 相关阅读:
    文件传输-一个大文件传输
    日志模块-logging模块
    加密模块hashlib
    面向对象进阶-反射
    面向对象
    模块和包
    作业-学生管理系统
    Java 链表反转
    Haoop MapReduce 的Partition和reduce端的二次排序
    Hadoop 笔记1 (原理和HDFS分布式搭建)
  • 原文地址:https://www.cnblogs.com/YuanSong/p/2618344.html
Copyright © 2011-2022 走看看