2014年9月24日水曜日

サービスで起動された実行ファイルから、ネットワークドライブにあるファイルを利用するには?



こんにちは。今回は、近藤が担当します。
前回に引き続き、Windowsでネットワークドライブを扱うときの話です。



前回は、ユーザがデスクトップにログインした状態(対話形式のログオンをしているとき)でなければ、エクスプローラなどから作成したネットワークドライブが使用できないことを説明しました。
今回は、ユーザがデスクトップにログインしていない状態のときにネットワークドライブを利用する方法を説明します。


ユーザが対話形式のログオンをしていないときに、サービスで起動された実行ファイルからネットワークドライブ上のファイルを扱うには、エクスプローラでネットワークドライブを設定する代わりに、net use コマンドを使用してネットワークドライブを設定します。

例えば、[server]サーバにある[share]フォルダを[y]ドライブにマウントする場合は、、サービス起動するプログラムより前に

C:\>net use y: \\server\share

を実行するように設定します。そうすることで、サービスで起動された実行ファイルから、ネットワークドライブ上のファイルを利用できるようになります。

また、ネットワークドライブ利用後に[y]ドライブを切断するには、

C:\>net use y: /delete

を実行するように設定します。


既にマウントされているデバイスに対して再度ネットワークドライブをマウントするコマンドを実行すると、そのコマンドはエラーになります。

<コマンド実行例>
C:\>net use y: \\server\share
コマンドは正常に終了しました。

C:\>net use y: \\server\share

システム エラー 85 が発生しました。

ローカル デバイス名は既に使用されています。

同様に、存在しないネットワークドライブに対して切断するコマンドを実行すると、そのコマンドはエラーになります。

<コマンド実行例>
C:\>net use y: /delete
y: が削除されました。

C:\>net use y: /delete

ネットワーク接続が見つかりませんでした。

NET HELPMSG 2250 と入力すると、より詳しい説明が得られます。


ネットワーク接続の一覧は、

C:\>net use

で確認することができます。

<コマンド実行例>
C:\>net use
新しい接続は記憶されません。

ステータス  ローカル名 リモート名                ネットワーク名

------------------------------------------------------------
OK           Y:        \\server\share            Microsoft Windows Network
コマンドは正常に終了しました。


この net use コマンド、接続ユーザ名やパスワードの指定などもできますので、詳しくは Microsoft のサイト
http://technet.microsoft.com/library/gg651155.aspx
などを参照してみてください。

メンテナンスなどを考えると、ネットワーク上にあるファイルを指定する場合は、ネットワークドライブを割り当てるのではなく、UNC(Universal Naming Convention)パスのまま記述していただきたいところですが…

(文中の各リンクは、2014/09/24時点のものです)


0 件のコメント:

コメントを投稿