VB.NET-写入注册表时拒绝访问
我正在使用以下代码运行我的程序,该程序将写入注册表VB.NET-写入注册表时拒绝访问,vb.net,Vb.net,我正在使用以下代码运行我的程序,该程序将写入注册表 Dim myProcess2 As New System.Diagnostics.Process() Dim startInfo2 As New ProcessStartInfo startInfo2.FileName = Application.StartupPath & "\installs\Assistant\RegisterSureFire.exe" sta
Dim myProcess2 As New System.Diagnostics.Process()
Dim startInfo2 As New ProcessStartInfo
startInfo2.FileName = Application.StartupPath & "\installs\Assistant\RegisterSureFire.exe"
startInfo2.Verb = "runas"
myProcess2.StartInfo = startInfo2
Application.DoEvents()
myProcess2.Start()
然后,我有另一个名为“RegisterSureFire”的文件,它正在运行,实际使用以下代码写入注册表:
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Assistant", "C:\SF\Assistant.exe")
这在WindowsVista/7/8中似乎可以很好地使用管理员的“runas”,但当您在WindowsXP中执行此操作时,会出现一个对话框,询问您是想在当前用户中还是在管理员中运行它。我的大多数客户都在50-70岁左右,所以他们不知道这是什么。另外,我注意到如果我只是不使用“runas”,如果它通常在WindowsXP上,那么我在尝试写入注册表时会收到一条“拒绝访问”的错误消息
有人能告诉我如何正确写入注册表吗?我认为您的代码确实正确,但您的应用程序需要修改注册表的权限。这可以在Windows XP下通过用户模拟实现 请通过谷歌找到完全符合您需求的解决方案,或者在此处查看这篇漂亮的文章:
在不知道登录信息的情况下,您如何进行“用户模拟”?此外,如果他们已经登录到管理员帐户,他们不应该有完全的访问权限吗?或者软件的工作方式不同吗?当然,您需要登录信息,但模拟是更改程序权限的一种方式。(如使用sudo)