我正在使用以下代码运行写入注册表的程序
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”,那么在尝试写入注册表时会收到“拒绝访问”错误消息。
谁能给我正确写信给注册表的建议?