2011-12-14 4 views
0

私のサービスは、ユーザーアカウントでのみ実行する必要があります。それを得るために私は何をすべきですか? これを確認するためにEnvironment.UserNameを確認しようとしました。しかし、コンパイラはこの部分を実行可能ファイルにコンパイルしないように見えます。 ありがとうございました!LocalSystemアカウントでC#サービスを最初から禁止する方法はありますか?

+3

コンパイラは、最適化されているかもしれない副作用のないものから離れたすべてのコードをコンパイルします。プロパティアクセスはそれには含まれていません - コードは間違いありません。 Environment.UserNameをチェックすると、何を探しているのですか? –

+0

はい、この方法で間違いなく解決された問題です。私の間違いは、大文字と小文字を区別しない文字列比較を使用しなかったことです。 OnStart()メソッドでは、アプリケーション(サービス)を開始したユーザーの名前のチェックを作成する必要があります。失敗した場合は関数から戻り、それ以外の場合は続行します。 – yurart

答えて

1

あなたはワンタイム修正を探しているなら:あなたはあなたのサービスをインストールしたら

、後藤コントロールパネル - >管理ツール - >サービスとコンポーネント

そこにあなたが設定する必要がありますあなたのサービスのプロパティ。

サービスを右クリックし、[プロパティ] - [ログオン]タブに移動すると、サービスが実行されるユーザーを設定できます。

幸運!

EDIT

:永久的な修正のために

- あなたはあなたのサービスをインストールするVSセットアッププロジェクトを使用しているONLY場合:インストーラの.CSファイルの

  • ダブルクリックして、デザインウィンドウが表示されます
  • サービスがある場合はインスタンスが表示されます(デフォルトはServiceProcessInstallerだと思います)
  • 右クリックそれを選択してください。
  • の下にその他のように、アカウントを設定してください。
+0

Thanxですが、正しい答えはOnStart()のEnvironment.UserNameを確認することです。 – yurart

関連する問題