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" />