门外汉,请问,RegistryKey key = Registry.LocalMachine之后,访问名称不固定的注册表位置,应该用什么命令。

daicscn 2017-10-10 03:10:13
只会按教程照葫芦画瓢的门外汉,慢慢有点想法了,也有问题了。前阵子抄了一段代码,节选如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using Microsoft.Win32; //对注册表进行操作需要引入

namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
RegistryKey key = Registry.LocalMachine;
RegistryKey hk = key.OpenSubKey("HARDWARE\\DESCRIPTION", true);

用完之后挺好用,回过头来慢慢啃每一句的意思。
上面最后两句的意思貌似是,访问了注册表里面的某个位置,并判断有没有权限修改吧。
现在想知道,如果需要访问的那个子项,名称是和系统、甚至硬件名有关联的,那就每台电脑都不一样了,应该用什么样的命令准确找到这个注册表项呢。
具体就像后面的附图,GEN开头这一注册表项貌似是和系统有关,所以每台电脑的这一项名称都不同,然后在上一级ACPI的子项里,GEN这一项从前往后的位置也不是固定的。
哎,混沌状态中,不知道问题描述明白了没有。。。
...全文
735 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeepSayingNo 2017-10-12
  • 打赏
  • 举报
回复
是的,就是这样做
引用 2 楼 daicscn 的回复:
[quote=引用 1 楼 dotnetstudio 的回复:] 你看能不能用通配符进行匹配
是不是这么个思路: 先找到确定名称的那一级注册表----然后用已知的一部分名称,用类似查找关键字的方式在这一级注册表里面找到这个子项-----然后对这个子项进行编辑。是吧。 C#可以实现上面的想法吧,具体的命令,能否给个关键。谢谢。 [/quote]
daicscn 2017-10-12
  • 打赏
  • 举报
回复
引用 1 楼 dotnetstudio 的回复:
你看能不能用通配符进行匹配
是不是这么个思路: 先找到确定名称的那一级注册表----然后用已知的一部分名称,用类似查找关键字的方式在这一级注册表里面找到这个子项-----然后对这个子项进行编辑。是吧。 C#可以实现上面的想法吧,具体的命令,能否给个关键。谢谢。
KeepSayingNo 2017-10-12
  • 打赏
  • 举报
回复
你看能不能用通配符进行匹配
去年年末才看过一本关于ASP.NET 操作注册表的书,可惜那时候就压根没想过写到网上去。 现在想想 写到网上有诸多好处 比如、 1、可以快速回忆相关知识点,还有自己写的参考代码,比别人写的强多了 2、可以丰富自己的博客推广自己 3、加强自己写作能力 贴出代码了 -------------------- 1、引入命名空间 using Microsoft.Win32;//修改注册表所需要用到的命名空间 2、之后方法喽 //修改注册表 设置IE打印背景图片 适用于IE8一下版本,修改为工具选项下的 打印背景颜色与图像 public void IESetupPrint_Background() { RegistryKey key = Registry.CurrentUser; RegistryKey software = key.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main", true); //该项必须已存在 software.SetValue("Print_Background", "yes"); software.Close(); } //设置页眉 页脚为空 public void IESetupPageSetup() { RegistryKey key = Registry.CurrentUser; RegistryKey software = key.OpenSubKey("Software\\Microsoft\\Internet Explorer\\PageSetup", true); //该项必须已存在 software.SetValue("header", ""); software.SetValue("footer", ""); software.Close(); } //设置页边距 设置IE页面设置 打印背景图片 //上下边距具体的值可以 先在IE里面设置再查看注册表实际值 然后在程序里写死 public void IESetupPage() { RegistryKey key = Registry.CurrentUser;//IE8以上版本 修改为页面设置 里页面 打印背景颜色与图像 RegistryKey software = key.OpenSubKey("Software\\Microsoft\\Internet Explorer\\PageSetup", true); software.SetValue("margin_top", 0.55984); software.SetValue("margin_bottom", 0.55984); software.SetValue("margin_left", 0.75433); software.SetValue("margin_right", 0.40000); software.SetValue("Print_Background", "yes"); } //查看注册表相应的键值 运行输入 regedit

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧