3

ローカルシステムで実行されているWindowsサービスがあり、成功するまで\\ machine \ folder\file.txtの形式のUNCパスを使用してファイルにアクセスしようとし続けます。手動でサービスを開始するとすぐに成功しますが、再起動すると、関連のないテキストファイルをダブルクリックするなどのログオフやWindowsエクスプローラーの「フィドル」などを実行するまで、システムエラー53(ネットワークパスが見つかりません)が発生します(奇妙な、知っている)。しかし、信頼できるトリックはありません。何が原因で突然共有フォルダが表示されるようになるのかわかりません。

ただし、サービス内から「net use I:\\ machine \ folder」でCreateProcessを試行して、共有フォルダーにアクセスする前にマップするという、明らかに信頼できる「解決策」を偶然見つけました(UNCを引き続き使用します)パスではなく、私:)。net use呼び出し自体がおそらく失敗するという事実にもかかわらず、呼び出しはサービスから共有フォルダーにアクセスする私の能力をすぐにトリガーするように見えますnet use(サービスからドライブをマップすることさえできないはずなので、私はチェックしていません)。

これは、サービスが起動時に開始すると機能しないが、手動で開始すると機能するデータベース接続に似ていますが、私の場合はネットワーク共有フォルダーであり、上記の状況で突然機能を開始することもできます。

アクセス権の取得に成功すると、共有フォルダーのフルアクセス機能が示されるため、これはアクセス許可の問題ではないと思います。でも、きちんと扱えるように理由を知りたいです。

4

2 に答える 2

2

LocalSystemアカウントには実際のログインまたはパスワードがないため、ドメイン上にある場合はコンピューターの資格情報を使用して共有に接続しようとします。それ以外の場合は匿名で接続を試みます。これを機能させるには、共有でコンピューターアカウント(通常はホスト名が$追加されている)へのアクセスを許可するか、パスワードなしでゲストアクセスを許可する必要があります。

より良い方法は、サービスを実行するための新しいドメインアカウントを作成し、新しいアカウントに適切にアクセス許可を設定することです。

于 2009-12-21T22:45:22.457 に答える
0

一連のドメインクレデンシャルを使用してサービスを開始しようとしましたか?

于 2009-12-21T22:49:10.597 に答える