利用RegistryKey访问注册表提示:不允许所请求的注册表访问权
作者:孟宪会 发布日期:2009-05-05 08:52:23

VB.NET 代码
Public Class Form1
    
Private regedit As Microsoft.Win32.RegistryKey
    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
'@ 读取注册表 ################################
        regedit = LocalMachine.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
        
Dim regkeys() As String
        regkeys
= regedit.GetValueNames
        
Me.CheckBox1.Checked = False
        
For Each Item As String In regkeys
            
If Item = "XXXXX" Then Me.CheckBox1.Checked = True
        
Next
    
End Sub
End Class

我的测试环境是: win2008
程序运行的时候提示:
************** 异常文本 **************
System.Security.SecurityException: 不允许所请求的注册表访问权。

而以管理员身份运行的时候没有问题.

程序本身可以用代码设置以管理员身份运行吗? 或者 程序中直接使用不需要管理员身份就可以访问注册表的方法?

网络解答:

Visual Studio 2008可以设置程序的UAC设置,在app.manifest文件中可以设置程序启动所需要的权限。

Software\Microsoft\Windows\CurrentVersion\Run由于是系统启动项所在位置(之一),必然不会允许未经确认的程序随意更改

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

这样就ok了

原文地址:http://dotnet.aspx.cc/article/1e8c54e1-69d2-450a-9925-eb8988e757a1/print.aspx
© 版权所有 【孟宪会之精彩世界】TM 2012