5

Windows Server 2003 を搭載した 2 台のコンピューターがあります。1 台のコンピューターにはネットワーク上にいくつかの共有フォルダーがあり、もう 1 台のコンピューターには、それらの共有フォルダーにアクセスする必要がある Windows サービス (C# で記述され、ネットワーク サービス アカウントで実行) があります。

次のコードは、ログイン ユーザーとして正常に動作しますが、Network Service アカウントで実行すると例外がスローされます。

File.WriteAllText(@"C:\temp\temp.txt", File.ReadAllLines(@"\\NetworkServer\Test\test.txt")[0]);

例外メッセージはLogon failure: unknown user name or bad password. このコードを Network Service アカウントで機能させるにはどうすればよいですか? これは Windows Server 2003 の設定ですか、それとも機能させるためにコードを追加する必要がありますか?

4

3 に答える 3

3

ネットワーク共有では、サービスを実行しているサーバーで「ネットワーク サービス」アカウントのアクセス許可を追加する必要があります。これは機能しますが、@nicholas は、共有へのアクセスが非常に幅広いユーザー グループに提供される可能性があると指摘しています。

別のオプション (私の意見ではより良いオプション) は、ドメイン アカウントを作成し、そのアカウントに共有に対する読み取り/書き込みアクセス許可を与えることです。次に、適切なアクセス許可を持つドメイン アカウントとして "実行" するようにサービスを構成します。

于 2009-12-23T16:38:59.923 に答える
1

私の知る限り、@Nateの答えは間違っているか、不明確です。Network Serviceネットワーク上での認証方法については説明していません。

Network Serviceアカウントは、ローカル システムで非常に限られた権限しか持たないため、ネットワーク上でコンピューターの資格情報を提示します。そのため、アカウントでネットワーク リソース (ネットワーク共有など) にアクセスする必要がある場合は、サービスが動作するコンピュータのアカウントNetwork Serviceへのアクセスを許可する必要があります。

ネットワーク リソースへのアクセスをローカルNetwork Serviceアカウントに提供してもまったく機能せず、認証/承認エラーが発生し続けます。

MDSNの「NetworkService アカウント」リファレンスを参照してください。

于 2014-06-30T10:18:33.090 に答える