7

Windows サービスによって開始される実行可能ファイルがあります。このプログラムは顧客のマシンで実行され、特定のタスクを実行するにはリモート共有に接続する必要があります。この共有は、UI を介して顧客が指定するため、これを事前に知ることはできません。つまり、「ハードコード」することも、共有を事前にマップすることもできません。

以前は、顧客が自分のマシンにログオンしてログオン時に実行可能ファイルを実行する必要がありましたが、主に顧客にとって簡単にするために、サービス内でプログラムを実行できるようにし、ログインを必要としないことを常に望んでいました。偶発的なログアウトによるソフトウェアのシャットダウンを防ぎます。これは、顧客のマシンに存在するローカル ユーザー アカウントがわからないことも意味するため、ローカル システム アカウントを使用してサービスを開始する必要があります。

前述のように、実行可能ファイルを開始してさまざまなタスクを実行するためのラッパー サービスが用意されました。ほとんどの場合、これは正常に機能しているように見え、基盤となるネットワークに正常にアクセスします。当社のソフトウェアの主な目的は、パケットのキャプチャなどです。

ただし、ソフトウェアが Windows 共有 (UNC 名) に接続しようとすると、接続できません。一方、実行可能ファイルが手動で開始された場合、正常に接続されます。

システム アカウントはネットワーク共有にアクセスできないため、この種の問題を解決するために私が一般的に見た提案はすべて、ユーザー アカウントを使用するように見えますが、私たちの場合、これは不可能です。これを機能させる他の方法はありますか?

編集: このアプリケーションは XP ではなく Win2K で実行できる (そして最も一般的にはそうなる) ことを忘れていました。

4

3 に答える 3

6

ネットワーク サービス アカウントで実行されるように Windows サービスを変更できる場合、実行可能ファイルはネットワーク共有にアクセスできるようになります (これが、ネットワーク サービス アカウントが作成された理由の 1 つです)。

ローカル システム アカウントとローカル サービス アカウントにはネットワーク資格情報がないため、ネットワーク上で認証できません。これは仕様によるものです。

編集: IIRC、Network Service アカウントは Server 2003 で導入され、XP サービス パックの 1 つに追加されました。

ネットワーク サービス アカウントが利用可能であることに依存できない場合は、専用のドメイン アカウントを作成し、アカウントの資格情報をどこかに保存し、サービス内からそれらを読み取り、ネットワーク共有にアクセスする前にログインしてそのユーザーになりすますことを検討してください。または、Windows サービスを専用アカウントとして直接実行することもできます。その場合、「サービスとしてログオン」権限が必要になります。

于 2008-10-30T11:59:38.250 に答える
5

NT AUTHORITY\LOCALSYSTEM (サービス アカウントの名前) で実行されるサービスがある場合、ネットワークの残りの部分には DOMAINNAME\COMPUTERNAME$ ($ 記号に注意) アカウントとして表示されます。つまり、Active Directory では COMPUTER のアカウントとして表示されます。ファイルと共有のアクセス許可を DOMAINNAME\COMPUTERNAME$ に付与するだけで問題ありません。

于 2008-10-30T11:57:46.007 に答える
0

別のアカウントを使用できないのはなぜですか? Windows には、ネットワーク アクセスを必要とするサービス専用のネットワーク サービス アカウントが組み込まれています。

とにかく、サービスに exe を開始させるときは十分に注意してください。

exe を含むフォルダーへの書き込みアクセスが無効になっていない場合、ユーザーはその exe を (たとえば) に置き換えることができますcmd.exe。次にサービスが exe を起動しようとすると、出来上がり: システム権限を持つコマンド シェル!

于 2008-10-30T12:05:38.063 に答える