问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在win2008 r2查看通过microsoft.win32.registry建立的注册表

发布网友 发布时间:2022-05-02 05:13

我来回答

1个回答

热心网友 时间:2022-06-28 13:13

获得RegistryKey对象引用的过程,视为打开一个键。
用户可能会认为,因为注册表的层次结构类似于文件系统,所以RegistryKey的方法类似于DirectoryInfo的方法,但实际上并非如此。访问注册表的方式通常不同于使用文件和文件夹的方式,RegistryKey执行的方法可以反映这种不同。
最明显的区别是如何在注册表的给定位置上打开一个注册表项。Registry类没有用户可以使用的公共构造函数,也没有任何可以直接通过键的名称来访问键的方法。但可以在相关的巢中从上至下浏览该键。如果要实例化一个RegistryKey对象,惟一的方式是从Registry的静态属性开始,向下浏览。例如,要读取HKLM/Software/Microsoft键中的一些数据,可以使用下面的代码获得它的一个引用:
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftware = hklm.OpenSubKey("Software");
RegistryKey hkMicrosoft = hkSoftware.OpenSubKey("Microsoft");

以这种方式访问注册表项是只读访问。如果要写入该键(包括写入其值,或创建和删除其子键),就需要使用OpenSubKey的另一个重写方法,该方法的第二个参数是bool类型,表示是否要对该键进行读写访问。例如,如果要修改Microsoft键(并假定用户是一个系统管理员,有修改该键的许可),就应编写如下代码:
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftware = hklm.OpenSubKey("Software");
RegistryKey hkMicrosoft = hkSoftware.OpenSubKey("Microsoft", true);

因为这个键包含Microsoft应用程序使用的信息,在大多数情况下,就不应修改这个特定键。
如果这个键已经存在,就应调用OpenSubKey()方法。如果这个键不存在,就返回一个空引用。如果要创建一个键,就应使用CreateSubKey()方法(该方法会通过返回的引用,自动提供该键的读写访问):
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftware = hklm.OpenSubKey("Software");
RegistryKey hkMine = hkSoftware.CreateSubKey("MyOwnSoftware");

CreateSubKey()工作的方式非常有趣:如果键不存在,它就创建这个键。但如果键已经存在,它就会返回一个表示该键的RegistryKey实例。这个方法采用这样的工作方式,其原因是用户总是可以使用这个键。注册表包含长期数据,例如Windows和各种应用程序的配置信息。因此用户并不需要经常显式地创建键。
更常见的是,应用程序需要确保某些数据在注册表中是存在的。换言之,如果这些数据不存在,就要创建相关的键,但如果它们存在,就不需要做任何事。CreateSubKey()就可以完成这项任务。与FileInfo.Open()的情况不同,CreateSubKey()不会删除任何数据。如果要删除注册表项,就需要显式调用RegistryKey.Delete()方法,因此注册表对于Windows是非常重要的。如果删除了一些重要的键,就会中断Windows的执行,此时就需要调试C#注册表调用了。
定位了要读取或修改的注册表项后,就可以使用SetValue() 或 GetValue()方法设置或获取该键中的值。这两个方法的参数都是一个字符串,其中字符串给出了值的名称,SetValue()还需要一个包含值的信息的对象引用。这个参数定义为对象引用,实际上可以是任何一个类的引用。SetValue()根据所提供的类的类型,确定把值设置为REG_SZ、REG_DWORD,还是 REG_BINARY。例如:
RegistryKey hkMine = HkSoftware.CreateSubKey("MyOwnSoftware");
hkMine.SetValue("MyStringValue", "Hello World");
hkMine.SetValue("MyIntValue", 20);

这段代码设置键包含两个值:MyStringValue的类型是REG_SZ,而MyIntValue的类型是REG_DWORD,这里只考虑这两种类型,在后面的示例中会使用它们。
RegistryKey.GetValue()的工作方式也是这样。它返回一个对象引用,如果该方法检测到值的类型为REG_SZ,就返回一个字符串引用,如果值的类型为REG_DWORD,就返回一个int型值。
string stringValue = (string)hkMine.GetValue("MyStringValue");
int intValue = (int)hkMine.GetValue("MyIntValue");

最后,完成了读取或修改数据后,应关闭该键:

```csharp
hkMine.Close();
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...要名句哦,四言七言都行,希望各位哥哥姐姐帮帮忙,谢谢啦~_百度... 怎么进入华为tm800moden界面 前两天感冒发烧,打了几针,现在还没全好,这两天牙根部分脸上肌肉痛,尤... 做完爱有点血特别淡是怎么回事 为什么跟女的做爱做完的时候会流血为什么跟女的做完爱会流?_百度... 刚做完爱怎么会出血 西德意志汇报报社发展 法兰克福汇报的发展历史 法兰克福汇报社会影响 法兰克福汇报的报纸简介 如何在win2008 r2查看通过microsoft.win32.registry建立的注册表 我公司是一般纳税人,实行简易征收,我们的进项税能抵扣吗? 蔡依琳的舞风是什么 win2008如何允许远程访问注册表 如何修复windows server2008注册表 简易征收的这一块,进项税需要做转出? 简易征收开增值税专用发票5%的税能抵扣吗 蔡依林有哪些爆发力特别强的舞蹈? 一般纳税人简易征收可以抵扣进项吗 蔡依林舞娘的舞蹈分解教学视频`~ 18k金是不 是 不黄啊 我 的意思很 淡不会是 假的 吧 穿着西装带个帽子拿个棒棒跳的舞是什么舞啊?就是蔡依林love love love 里的那个? 简易征收的进项税可以抵扣吗 买了根18K黄金项链,颜色浅黄色,标有AU750,有韧性,是真的假的。 简易征收的进项税可以抵扣吗? 简易征收的一般纳税人可以抵扣进项税吗 简易征收3%的进项税可以抵扣吗 意外伤害伤残赔偿金,八级九级十级分别怎么赔付 意外伤害保险 伤残 数据库建模是什么? 按简易办法征收增值税不用抵扣进项税吗? windows2008 安装提示系统注册表包含无效文件路径 windows2008 安装提示系统注册表包含无效文件路径 蔡依林《舞娘》MV中的群舞是什么舞蹈风格? 今年会出哪些5g手机? 蔡依林舞蹈 WINDOWS2008操作系统里有注册表编辑器么? 蔡依林所跳的是哪一类型的舞蹈? 中兴将发布5G旗舰手机,想要逆风翻盘,你觉得现在还来得及吗? windows 2008 注册表删除了guest 如何恢复啊大哥 一般纳税人选择了简易征收还能抵扣进项税吗 谁有蔡依林《love love love》完整的舞蹈教学视频呀..急急急 windows server 2008 r2注册表能初始化吗 windows2008注册表中怎么没有clientfornfs 我是一般纳税人,但是是简易征收,税率是3%,请问如果我有进项税的话,我可以抵扣吗? win7、2008 注册表打开加载应用程序和不安全文件 增值税一般纳税人可以选择按照简易办法征收的能否抵扣进项税额? windows2000怎么在cmd里面查看注册表内容? 简易征收所占比重很小,对应不能抵扣的进项税要区分吗? 电脑双系统下如何打开另一个系统的注册表