接続している場所に基づいてデフォルトのプリンタを設定する簡単なサービスを作成していますが、私のサービスでWMIを使用する際に問題があります。私はそれについてもっと考えるほど、私がやろうとしていることをすることは可能ではないと思う。特定のユーザーにサービスが関連付けられていないため、私の疑惑が間違っている場合に備えて、とにかく質問すると思いました。WindowsサービスでWMIを使用することはできますか?
ここは私がやっていることです。
- サービスは
NetworkChange.NetworkAvailabilityChanged
イベントにサブスクライブしています。 - イベントが受信されると、クエリWMI
SELECT * FROM Win32_Printer WHERE Network=true
が返されます。 - をループし、
ManagementObjectCollection
をループし、各プリンタのステータスを確認します。プリンタがコールに接続されている場合は ManagementObject.InvokeMethod("SetDefaultPrinter",null)
私はセキュリティイベントをチェックすると、私は私が明示的にその情報を提供していなかったためであると仮定しています失敗の監査イベント「不明のユーザー名または不正なパスワード」を、気づいたログ。
ユーザー名とパスワードを指定せずにこれを行う方法、またはセキュリティ上の目的で資格情報が必要ですか?
サービスは* some *ユーザー、NETWORK SERVICE、LOCAL SERVICE、SYSTEMのように実行する必要がありますか?あなたは、指定されたアカウントがあなたが望むことをする許可を持っていることを確認する必要があります。 – Serguei
@Serguei - このサービスをユーザーとして実行するにはどうすればよいですか? – Tester101
サービスが展開されたら、[スタート]> [管理ツール]> [サービス]の順に選択すると、サービスのプロパティでサービスアカウントを設定できます。 – Serguei