问答文章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如何允许远程访问注册表 如何修复windows server2008注册表 简易征收的这一块,进项税需要做转出? 简易征收开增值税专用发票5%的税能抵扣吗 蔡依林有哪些爆发力特别强的舞蹈? 一般纳税人简易征收可以抵扣进项吗 蔡依林舞娘的舞蹈分解教学视频`~ 18k金是不 是 不黄啊 我 的意思很 淡不会是 假的 吧 穿着西装带个帽子拿个棒棒跳的舞是什么舞啊?就是蔡依林love love love 里的那个? 简易征收的进项税可以抵扣吗 买了根18K黄金项链,颜色浅黄色,标有AU750,有韧性,是真的假的。 简易征收的进项税可以抵扣吗? 简易征收的一般纳税人可以抵扣进项税吗 简易征收3%的进项税可以抵扣吗 意外伤害伤残赔偿金,八级九级十级分别怎么赔付 意外伤害保险 伤残 数据库建模是什么? 求教真身为十二品莲花的玄幻小说是什么名字来着?女主,十二品业火红莲,曾经莲子被别人拿走过. 如何在win2008 r2查看通过microsoft.win32.registry建立的注册表 按简易办法征收增值税不用抵扣进项税吗? windows2008 安装提示系统注册表包含无效文件路径 windows2008 安装提示系统注册表包含无效文件路径 蔡依林《舞娘》MV中的群舞是什么舞蹈风格? 今年会出哪些5g手机? 蔡依林舞蹈 WINDOWS2008操作系统里有注册表编辑器么? 蔡依林所跳的是哪一类型的舞蹈? 中兴将发布5G旗舰手机,想要逆风翻盘,你觉得现在还来得及吗? windows 2008 注册表删除了guest 如何恢复啊大哥 一般纳税人选择了简易征收还能抵扣进项税吗 谁有蔡依林《love love love》完整的舞蹈教学视频呀..急急急 windows server 2008 r2注册表能初始化吗 windows2008注册表中怎么没有clientfornfs 我是一般纳税人,但是是简易征收,税率是3%,请问如果我有进项税的话,我可以抵扣吗? win7、2008 注册表打开加载应用程序和不安全文件 增值税一般纳税人可以选择按照简易办法征收的能否抵扣进项税额? windows2000怎么在cmd里面查看注册表内容? 简易征收所占比重很小,对应不能抵扣的进项税要区分吗?