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では完全に正常に機能するようですが、Windows XPでこれを行うと、現在のユーザーまたは管理者のどちらで実行するかを尋ねるボックスが表示されます。私の顧客のほとんどは50-70歳くらいなので、これが何であるかわかりません。また、Windows XPで一般的に「ルーン」を使用しない場合、レジストリに書き込もうとすると「アクセスが拒否されました」というエラーメッセージが表示されます。

レジストリに正しく書き込むためのアドバイスを誰かに教えてもらえますか?

4

1 に答える 1

0

あなたのコードは確かに正しいと思いますが、アプリケーションにはレジストリを変更する権限が必要です。これは、ユーザーのなりすましを使用してWindowsXPで実現できます。

どうぞ、グーグルであなたのニーズにぴったりの解決策を見つけるか、ここでこの素晴らしい記事を見てください:http: //www.codeproject.com/Articles/21050/Security-User-Impersonation

于 2012-12-04T16:22:58.923 に答える