2010-12-28 8 views
0

接続している場所に基づいてデフォルトのプリンタを設定する簡単なサービスを作成していますが、私のサービスでWMIを使用する際に問題があります。私はそれについてもっと考えるほど、私がやろうとしていることをすることは可能ではないと思う。特定のユーザーにサービスが関連付けられていないため、私の疑惑が間違っている場合に備えて、とにかく質問すると思いました。WindowsサービスでWMIを使用することはできますか?

ここは私がやっていることです。

  1. サービスはNetworkChange.NetworkAvailabilityChangedイベントにサブスクライブしています。
  2. イベントが受信されると、クエリWMI SELECT * FROM Win32_Printer WHERE Network=trueが返されます。
  3. をループし、ManagementObjectCollectionをループし、各プリンタのステータスを確認します。プリンタがコールに接続されている場合は
  4. ManagementObject.InvokeMethod("SetDefaultPrinter",null)

私はセキュリティイベントをチェックすると、私は私が明示的にその情報を提供していなかったためであると仮定しています失敗の監査イベント「不明のユーザー名または不正なパスワード」を、気づいたログ。

ユーザー名とパスワードを指定せずにこれを行う方法、またはセキュリティ上の目的で資格情報が必要ですか?

+1

サービスは* some *ユーザー、NETWORK SERVICE、LOCAL SERVICE、SYSTEMのように実行する必要がありますか?あなたは、指定されたアカウントがあなたが望むことをする許可を持っていることを確認する必要があります。 – Serguei

+0

@Serguei - このサービスをユーザーとして実行するにはどうすればよいですか? – Tester101

+0

サービスが展開されたら、[スタート]> [管理ツール]> [サービス]の順に選択すると、サービスのプロパティでサービスアカウントを設定できます。 – Serguei

答えて

1

サービスは、ユーザー(たとえば、NETWORK SERVICE、LOCAL SERVICEまたはSYSTEM)として実行する必要があります。あなたは、指定されたアカウントがあなたが望むことをする許可を持っていることを確認する必要があります。 Windowsでデプロイされたサービスのアクセス許可を変更するには、[スタート]> [管理ツール]> [サービス]の順に選択し、特定のサービスのサービスアカウントを変更します。

0

私はこれが古い質問だと知っていますが、私は既存の答えが管理しやすい解決策を提供していないと感じています。

としては

...あなたがそのユーザーとして、よりよい解決策をすることであろう特定のユーザーとしてログオンするWindowsサービスを設定することが可能である一方で認証される必要があるユーザーのデフォルトプリンタの選択を行うように指摘しました

隠しフォームを使用してwinformsプログラムを作成し、ユーザーがタスクスケジューラを使用してログオンしたときに起動します。

この方法では、多くのユーザーがPCを使用でき、サービスのログオン設定を変更することなくアプリケーションを利用できます。

私はwinformsアプリケーションが低いエントリーバーを持っていることを提案しました。あなたは、UIの見通しプロジェクトタイプから他の種類の不可視を使用することができます。

関連する問題