2009-07-02 10 views
3

私はWindowsサービスをコーディングして、ユーザーをコンピュータに追加します(権限のないユーザー、つまり認証のみ)。 (補足として、私はthis methodを使用する予定です)リモートコンピュータからWindowsサービスを呼び出す

このWindowsサービスを別のコンピュータから呼び出せます。

これはどのように行われますか?これは高価な注文ですか? Webサービスを作成してIISでホストする方が良いでしょうか?

私はいくつかのWCFサービスを呼び出したコンピュータ上でIISでホストしています(彼らは提案されたWindowsサービスへの呼び出しを行います)。私は、IISでのホスティングには多少問題があることを知ったので、必要がない限り、管理する第2のIISインスタンスを持っていないでしょう。

(Iは、Visual Studio 2008 SP1、C#、および()呼び出し元とサービスホストの両方のためのWindows Server 2003を使用することになります。ヘルプ

答えて

3

IISでWebサービスをホストして、同じマシン上のNTサービスと通信しようと考えているのであれば、となるでしょう。確かに以上の問題があります。

他の回答から、必要な操作でWCFサービスを作成し、対話したい同じNTサービス内でそのサービスをホストできることが示されています。証明書やユーザーアカウントを使って簡単に保護することができます。これは、適切な人物/マシンによってのみ制御されるようにします。

NTサービス自体を制御する必要がある場合は、sc.exeなどの既存のプログラムがあり、NTサービスの状態をリモートで開始、停止、構成、または照会することができます。

ただし、カスタムNTサービスとカスタムWCFサービスを作成する際のオーバーヘッドがなくても、ソリューションを探すことを検討することをお勧めします。その場合、ネットユーザコマンド(リンクなし - 新しいユーザ制限)またはAddUsers(kb 199878/en-usを参照)ユーティリティで十分です。遠隔の「コントローラ」がこれらのコマンドをターゲットマシンに対して直接呼び出せれば、このようなカスタムソフトウェアアドレスを作成する必要はありません。さらに、ターゲットマシンで維持管理するソフトウェアが少なくて済みます。組み込みのOS機能と管理ユーティリティを使用するだけです。

最後に、セキュリティの側面について考える必要があります.NTサービスとIISは通常非常に制限されたアカウントで実行され、多くの監査人は、ローカルでユーザーを作成または変更するための十分なアクセス許可で実行中のサービス特に他のマシンでは問題ありません。指定した "認証"以上の権限を持つユーザーを作成するためにサービスを使用できないようにする必要があります。

編集:ネットユーザーコマンドは、別のマシンのローカルユーザーに対しては機能しませんが、チェックアウトすることはできません。 pspasswdは、ユーザーを作成するためのPsExecと一緒に、必要なものをリモートで実行する必要があります。

+0

DanOありがとうございます。後に続くものの実際のリンクです:http://support.microsoft.com/default.aspx/kb/251394 – Vaccano

1

ため

感謝をWindowsサービスは、リモート・インタフェースを公開する場合、それ

それ以外の場合は、リモートマシン上で実行されている他のプロセスへのアクセスと同じですが、リモートマシンに対して実行するためのサポートが組み込まれたツール(scなど)ファイアウォールの合併症)。

すべてのIPCメカニズムが適用されます。ソケット、Webサービス、リモーティングなど...

+0

ネットサービススイートのコマンドも通常、リモートターゲットをサポートしています –

+0

私はこの考えが好きです。しかし、リモーティングもやや難しい(私は一度だけ行った)。私はこれを試してみるWCFは、Windowsサービスでは私のためにうまくいきません。 – Vaccano

0

リモートボックスでWindowsサービスと通信するWCFサービスを作成できます。 IISでWCFコンポーネントをホストします(または、通信できるようにしたい場合)。次にリモートマシンからWCFコンポーネントを呼び出します。

2

WindowsサービスでWCFサービスをホストするだけです。これで遠隔から呼び出すことができます。

2

Windowsサービス内でWCFサービスをホストすることができます。 TCPバインディング(NetTcpBindingクラス)を見てください。クライアントとサーバーの両方がWCFを使用する必要がありますが、それは実装上の問題であるようには聞こえません。

また、このMSDN articleで「Windowsサービスでホスティング」と題されたセクションには、あなたはあなたの窓サービスから直接、WCFサービスを公開することができ、プロセス

+0

MSDNの記事への追加情報とリンクをありがとう。 – Vaccano

1

のウォークスルーを提供します。 Windowsサービスを起動すると、他のバックグラウンドプロセスを起動するだけでなく、サービス実装のためにServiceHost <T>のインスタンスを作成することができます。これにより、WCFアクセスを提供するだけでなく、要求したようなIISの余分なインスタンスを回避し、TCP、Named Pipes、およびWsHttpエンドポイントを提供することができます。これは、パフォーマンスチューニング分野で優れた柔軟性を提供するはずです。なぜなら、このサービスは外部ではなくネットワーク上で内部的に消費されるように思えるからです。

関連する問題