1

我正在使用以下代码运行写入注册表的程序

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

这似乎在 Windows Vista/7/8 中使用管理员的“runas”运行得非常好,但是当您在 Windows XP 中执行此操作时,该框会出现询问您是否要在当前用户或管理员中运行它。我的大多数客户年龄在 50-70 岁左右,所以他们不知道这是什么。我还注意到,如果我通常在 Windows xp 上不使用“runas”,那么在尝试写入注册表时会收到“拒绝访问”错误消息。

谁能给我正确写信给注册表的建议?

4

1 回答 1

0

我认为您的代码确实是正确的,但是您的应用程序需要修改注册表的权限。这可以在 Windows XP 下通过用户模拟来实现。

请谷歌找到适合您需求的解决方案,或者在这里查看这篇精彩的文章:http: //www.codeproject.com/Articles/21050/Security-User-Impersonation

于 2012-12-04T16:22:58.923 回答