首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

VS2010操作注册表没法读取、删除

2012-12-17 
VS2010操作注册表无法读取、删除!我用的是WIN7,VS2010(VB),对注册表中HKEY_LOCAL_MACHINE\SYSTEM\ControlSe

VS2010操作注册表无法读取、删除!
我用的是WIN7,VS2010(VB),对注册表中HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_General&Prod_USB_Flash_Disk&Rev_1100\0405BQ0000000580&0\Properties无法读取,错误提示如下:
    未处理SecurityException
    不允许所请求的注册表访问权。

读取代码如下:
        Dim Key1 As Microsoft.Win32.RegistryKey
        Key1 = My.Computer.Registry.LocalMachine
‘定义要遍历的子项
Dim str As String = “SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_General&Prod_USB_Flash_Disk&Rev_1100\0405BQ0000000580&0\Properties”
        Dim keyTemp As Microsoft.Win32.RegistryKey
‘提权
        Dim user As String = Environment.UserDomainName & "" & Environment.UserName’获得当前管理用户,(本机中我是管理用户登录的)
        Dim mSec As RegistrySecurity = New RegistrySecurity()
        mSec.AddAccessRule(New RegistryAccessRule(user, RegistryRights.FullControl, AccessControlType.Allow))
        Key1.SetAccessControl(mSec)

        keyTemp = Key1.OpenSubKey(str,flase)
        Dim keyName() As String
        keyName = keyTemp.GetSubKeyNames
   ‘开始遍历加入到listbox2中 列出 
  ListBox2.Items.Clear()
        Dim I As Integer
        For I = 0 To keyName.GetLength(0) - 1
            Try
                ListBox2.Items.Add(keyName(I))
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Next


   在注册表中直接查看Properties时也不行,提示错误如下:
   无法打开Properties。由于某个错误无法打开该密钥。详细信息:拒绝访问。
   
   当在注册表中对Properties添加所有者和权限后点击查看时就不会出现上面的提示了,但查看其下面的项时又出现相同的错误提示,只得在注册表中一一对各项手动设置所有者和权限后,才可查看。此时再运行所编的程序,一切正常,遍历出所有子项。
   程序中我也已提权了啊,为什么就不能访问呢?在注册表中设置所有者和权限后,程序就能访问了,这说明还是程序中提权代码不对或是有问题,请高手指教啊!
   
   删除操作也同样错误!急啊,高手帮帮忙啊!最好有详细代码C或VB都行!我暂时没有分,请帮个忙吧!
[解决办法]
错误信息明明白白,是权限的问题。注册表操作是需要权限的,尤其到了Win7启用用户权限管理(忘记名称了)后许多操作都需要用Run as adminstrator这种方式才可以的。

你有所需权限的话,试试按Run as adminstrator的方式运行程序看看。
[解决办法]
是以adminstrator身份运行的
[解决办法]
是以adminstrator身份运行的,而且代码中已有提权操作了,麻烦你看完代码再给讲讲吧!请指点一下啦!
[解决办法]
项目上右键->属性->查看UAC设置

<requestedExecutionLevel level="asInvoker" uiAccess="false" />


改为

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

------解决方案--------------------


楼上大哥,我是在WINFORM下编的
[解决办法]

引用:
楼上大哥,我是在WINFORM下编的

我哪里说的不是windows application了?
你是不知道什么是“项目”还是找不到“右键”,还是压根没尝试过我给你简明而要的答案?兄弟,你不懂没关系,新手搜不到没关系,但答案放你面前不去试,直接质疑回答你问题人的理解能力,我觉得你需要谦虚一点。
[解决办法]
对不起,有不对的地方请多谅解,给您赔不是了,对不起啊!我已设置了,还是不行!提示“不允许所请求的注册表访问权”!

热点排行