私は vb.net 2010 の新しいプログラマーです。管理者として (UAC を通過せずに) 実行する必要があるアプリケーションを作成しました。これは、管理者権限でインストールされるマルウェア保護ソフトウェアです。
システムの起動時に自動的に実行される Windows サービスを作成しています。私が作成したサービスは Local System Service です。
アプリケーションの実行後、ローカル システム サービスがメイン アプリケーション ウィンドウを表示しません。この問題から抜け出すために、このサービスで別のアプリケーションを実行しようとしました。この別のアプリケーションがメイン アプリケーションを実行します。しかし、私はエラーが発生しています。
今私の質問は、ローカルシステムサービスで管理者として実行してアプリケーションを実行するにはどうすればよいですか?
サービス(1番目のexe)とアプリスターターexe(2番目のexe)で使用しているコードは次のとおりです
サービスコード:
Protected Overrides Sub OnStart(ByVal args() As String)
Dim procStartInfo As New ProcessStartInfo
Dim procExecuting As New Process
If File.Exists(OwnDirPath & "appstarter.exe") Then 'realtime
With procStartInfo
.UseShellExecute = True
.FileName = OwnDirPath & "appstarter.exe"
.WindowStyle = ProcessWindowStyle.Normal
.Verb = "runas"
End With
procExecuting = Process.Start(procStartInfo)
End If
End Sub
App Starter code:
Sub main()
Dim procStartInfo As New ProcessStartInfo
Dim procExecuting As New Process
If File.Exists(My.Application.Info.DirectoryPath & "mfirewall.exe") Then With procStartInfo
.UseShellExecute = True
.FileName = "mfirewall.exe"
.WindowStyle = ProcessWindowStyle.Normal
.Verb = "runas"
End With
procExecuting = Process.Start(procStartInfo)
End If
End Sub
編集: サービスexeからメインアプリケーションexeを実行してもエラーが発生しなくなりました。ただし、メイン アプリケーション ウィンドウは非表示になっており、SYSTEM アカウントで実行されています。
ユーザー アカウントのパスワードを渡さずに、ローカル システム サービスからユーザー アカウントのアクセス許可を使用してメイン アプリケーションを実行するにはどうすればよいですか?
私に最高のものを提案してください。
ありがとうございます。それでは、お元気で、