トップ回答者
Windowsサービスからネットワークドライブ上のファイルへアクセスする方法

質問
-
たびたびお世話になります。
いま、Windowsサービスがネットワークドライブ上のファイルへアクセスできなくて困っています。。
状況は以下の通りです。
・サービス起動OSがXPだとOK。
・サービス起動OSがVista、2003ServerだとNG。
・サービスのユーザーはLocalSystem。
どうも失敗する原因はアクセス権がらみのようで、失敗する箇所は _access()関数です。戻り値は5 or 1 or 3 or 2 or 6が帰ってくるようです。
サービスがネットワークドライブのファイルをアクセスするためには決まりごと等の鉄則があるのでしょうか?
問題の解決方法をご教授願います。
現象の説明に不足するものがあればご指摘ください。。
回答
-
「WNetAddConnection2」とか「WNetAddConnection3」といった API を使えばできます。
WNetAddConnection2 関数
http://msdn.microsoft.com/ja-jp/library/cc446983.aspx
WNetAddConnection3 関数
http://msdn.microsoft.com/ja-jp/library/cc446986.aspx- 回答としてマーク yoshiyoshi123 2009年10月14日 9:32
すべての返信
-
自己フォローです。
http://technet.microsoft.com/ja-jp/library/cc782435(WS.10).aspx
Windows2003でドメイン コントローラの Local System アカウントにログオンした場合にアクセスが可能になりそうです。
他に方法がないか模索中です。。
でもなぜXPだとOKだったのだろうか? -
Vista では Session 0 分離の影響で Windows サービスのセッションとログオン セッションが異なるのですが、
Windows サービスの方でもネットワーク ドライブへの割り当てはしていますか?
第 14 回 Windows Vista のセキュリティ機能 ~ Windows Service Hardening ~
http://technet.microsoft.com/ja-jp/library/dd362923.aspx
Windows Vista でのサービスとドライバの Session 0 分離の影響
http://www.microsoft.com/japan/whdc/system/vista/services.mspx -
「WNetAddConnection2」とか「WNetAddConnection3」といった API を使えばできます。
WNetAddConnection2 関数
http://msdn.microsoft.com/ja-jp/library/cc446983.aspx
WNetAddConnection3 関数
http://msdn.microsoft.com/ja-jp/library/cc446986.aspx- 回答としてマーク yoshiyoshi123 2009年10月14日 9:32
-
「WNetAddConnection2」とか「WNetAddConnection3」といった API を使えばできます。
WNetAddConnection2 関数
http://msdn.microsoft.com/ja-jp/library/cc446983.aspx
WNetAddConnection3 関数
http://msdn.microsoft.com/ja-jp/library/cc446986.aspx
なるほど。やっぱりWNetAddConnection関数すか。。。
ご教授ありがとうございました。('-')/