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

(本記事の情報は、記事の公開日時点での情報であり、その正確性、完全性、最新性等内容を保証するものではありません。)
前回記事、サービスで起動された実行ファイルから、ネットワークドライブが使えないのは何故?に引き続き、Windowsでネットワークドライブを扱うときの話です。
前回は、ユーザーがデスクトップにログインした状態(対話形式のログオンをしているとき)でなければ、Windowsエクスプローラーなどから作成したネットワークドライブが使用できないことを説明しました。
今回は、ユーザーがWindowsデスクトップにログインしていない状態でネットワークドライブを利用する方法を説明します。
ユーザーが対話形式のログオンをしていない時に、サービスで起動された実行ファイルからネットワークドライブ上のファイルを扱うには、エクスプローラーでネットワークドライブ設定する代わりに、「net use」コマンドを使用してネットワークドライブを設定します。
例えば、[server]サーバーにある[share]フォルダーを[y]ドライブにマウントする場合は、サービス起動するプログラムより前に
C:>net use y: servershare
を実行するように設定します。そうすることで、サービスで起動された実行ファイルから、ネットワークドライブ上のファイルを利用できるようになります。
また、ネットワークドライブ利用後に[y]ドライブを切断するには、
C:>net use y: /delete
を実行するように設定します。
既にマウントされているデバイスに対して再度ネットワークドライブをマウントするコマンドを実行すると、そのコマンドはエラーになります。
<コマンド実行例1>
C:>net use y: servershare
コマンドは正常に終了しました。
C:>net use y: servershare
システム エラー 85 が発生しました。
ローカル デバイス名は既に使用されています。
同様に、存在しないネットワークドライブに対して切断するコマンドを実行すると、そのコマンドはエラーになります。
<コマンド実行例2>
C:>net use y: /delete
y: が削除されました。
C:>net use y: /delete
ネットワーク接続が見つかりませんでした。
NET HELPMSG 2250 と入力すると、より詳しい説明が得られます。
ネットワーク接続の一覧は、
C:>net use
で確認することができます。
<コマンド実行例3>
C:>net use
新しい接続は記憶されません。
ステータス ローカル名 リモート名 ネットワーク名
------------------------------------------------------------
OK Y: servershare Microsoft Windows Network
コマンドは正常に終了しました。
この「net use」コマンド、接続ユーザー名やパスワードの指定などもできますので、詳しくは Microsoft のサイト
http://technet.microsoft.com/library/gg651155.aspx
などを参照してみてください。
メンテナンスなどを考えると、ネットワーク上にあるファイルを指定する場合は、ネットワークドライブを割り当てるのではなく、UNC(Universal Naming Convention)
パスのまま記述していただきたいところですが…
(文中の各リンクは、2014/09/24時点のものです)
関連コンテンツ
サービスで起動された実行ファイルから、ネットワークドライブが使えないのは何故?