VS2010操作注册表,至今我在网上没有找到正解,高手请进,我没有分,第一个给出正解的本人请喝昆仑山雪菊

时间:2022-12-31 15:34:54
我用的是WIN7,VS2010(VB),对注册表中HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_Lenovo&Prod_USB_Flash_Drive&Rev_1100\AA04012700010894&0\Properties进行操作,想查看和删除
,错误提示如下:
  未处理SecurityException
  不允许所请求的注册表访问权。

用regedit查看Properties权限,所看到的是“组或用户名”是空的。

用psexec.exe工具提权运行regedit,可看到Properties下所有子项及键值。

现在的问题就是如何用VS2010(VB)提权操作注册表,查看和删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_Lenovo&Prod_USB_Flash_Drive&Rev_1100\AA04012700010894&0\Properties下的所有内容。

目前为止,我已在网上查一两周了,大多都是复制别人的,要不就是说这权那权的,没有一个给出完整代码的!经测试没有一个能实现的答案,

请不要随意COPY一下代码就转过来,自己最好亲自测试一下。

本人没有分,但我可以请第一个给出正解的人喝昆仑山雪菊。
给出正解的请把你的收信地址发至我QQ邮箱: wodmaq@qq.com

3 个解决方案

#1



//在SOFTWARE在打开子项person,把“张三”写入到person中名字为“username”的项中
  Microsoft.Win32.RegistryKey rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE",true).CreateSubKey("person");
  rkey.SetValue("username",“张三”);
  
  //判断注册表中是否有存放username的键
  Microsoft.Win32.RegistryKey software=Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE",true);
  
  foreach(string name in software.GetSubKeyNames())
  {
   if(name == "jc_person")
   {
   //从注册表中读用户名
   Microsoft.Win32.RegistryKey rkey = software.OpenSubKey("person");
   if(rkey.GetValue("username") == null)  this.txtUsername.Text = "";
   else
    {
    this.txtUsername.Text = rkey.GetValue("username").ToString();
    store = true;
    }
   }
  }
  if(!store)
  {
   //在SOFTWART下创建一个子键来存放username
   software.CreateSubKey("person");
  }
   

#2


是对注册表中HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\下的子键进行操作,不是单独创建一下,单独创建读取没有问题,具体问题请看帖子正文。

#3


管理员权限

#1



//在SOFTWARE在打开子项person,把“张三”写入到person中名字为“username”的项中
  Microsoft.Win32.RegistryKey rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE",true).CreateSubKey("person");
  rkey.SetValue("username",“张三”);
  
  //判断注册表中是否有存放username的键
  Microsoft.Win32.RegistryKey software=Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE",true);
  
  foreach(string name in software.GetSubKeyNames())
  {
   if(name == "jc_person")
   {
   //从注册表中读用户名
   Microsoft.Win32.RegistryKey rkey = software.OpenSubKey("person");
   if(rkey.GetValue("username") == null)  this.txtUsername.Text = "";
   else
    {
    this.txtUsername.Text = rkey.GetValue("username").ToString();
    store = true;
    }
   }
  }
  if(!store)
  {
   //在SOFTWART下创建一个子键来存放username
   software.CreateSubKey("person");
  }
   

#2


是对注册表中HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\下的子键进行操作,不是单独创建一下,单独创建读取没有问题,具体问题请看帖子正文。

#3


管理员权限