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了