利用者に意識させない ネットワーク共有フォルダ ・ドライブ割り当て方法について

Windows資格情報の扱いで困ったことはありませんか? ネットワーク共有フォルダ のユーザーID、パスワードを教えたくない。けど、ローカルユーザーのパスワードを変更すると資格情報は消えてしまう…。というご相談を頂きました。ファイルサーバーや共有フォルダを運用する際、「Active Directory」でドメインに参加している端末であればあまり考えないのですが、数台の小規模な環境や、VPN接続で本部側はドメインに参加しているが、拠点側はドメインに参加していない場合など、色々な状況や環境があると思います。何かいい方法が無いか考えてみました。

Windows資格情報のバックアップ、復元を活用する

資格情報の登録

「コントロールパネル」→「ユーザーアカウント」→「資格情報マネージャー」の「Windows資格情報」から「Windows資格情報の追加」をクリックします。

winshikaku3

「インターネット又はネットワークのアドレス」に<IPアドレスorPC名(名前解決出来る場合)>を入力、ユーザー名に<ドメイン名>¥<ユーザー名>、パスワードに対象のドメインユーザーのパスワードを入力します。

shikaku10

ここではPC名、IPアドレスの前に”¥¥”マークは不要です。

上記の手順以外に、「エクスプローラー」で¥¥<IPアドレスorPC名(名前解決出来る場合)>にアクセスするとユーザー名とパスワードを要求さます。

shikaku11

「資格情報を記憶する」にチェックを入れれば、資格情報が保存されます。

資格情報のバックアップと復元

パスワード変更前の状態で資格情報のバックアップを行い、変更後、バックアップファイルから復元します。「資格情報マネージャー」の「Windows資格情報」から「資格情報のバックアップ」をクリックします。

パスワード変更後、先ほどのファイルを「Windows資格情報」の「資格情報の復元」から復元します。

VBScriptからバッチファイルを実行する

資格情報を登録するコマンド

資格情報を登録するコマンドは以下のとおりです。

cmdkey /add:<PC名> /user:<ドメイン名>¥<ユーザー名> /pass:<パスワード>

名前解決が出来ない場合、<PC名>の箇所は<IPアドレス>を入力します。<ドメイン名>の箇所はドメインに参加している場合はドメイン名、ローカルユーザーの場合は”.”(ドット)を使うか、ユーザー名のみを入力します。

こちらのコマンドの場合、資格情報の復元と同様、パスワード変更後に手動で実行します。

ネットワークドライブを割り当てるコマンド

以下のコマンドでネットワークドライブの割り当てが可能です。

net use <ドライブ>: ¥¥<PC名>¥<フォルダ名> <パスワード> /user:<ドメイン名>¥<ユーザー名> /PERSISTENT:NO

名前解決が出来ない場合、<PC名>の箇所は<IPアドレス>を入力します。<ドメイン名>の箇所はドメインに参加している場合はドメイン名、ローカルユーザーの場合は”.”(ドット)を使うか、ユーザー名のみを入力します。

オプションで「/PERSISTENT:YES」とすると、情報が保存され、次回ログオン時に再接続しますが、「/PERSISTENT:NO」とすれば再接続しません。「/PERSISTENT:NO」で作成し、ユーザーのログイン毎に実行すれば、資格情報を意識せず利用出来ると思います。

VBScriptをEXE化し、EXEからバッチファイルを作成して実行

例えば、上記ネットワークドライブを割り当てる場合、VBScriptからの実行は以下のような内容になります。

Dim objShell
Dim objFS
Dim objOF
Dim f_Name

Set objFS = CreateObject("Scripting.FileSystemObject")
f_Name = objFS.GetParentFolderName(WScript.ScriptFullName)

Set objOF = objFS.OpenTextFile("" & f_Name & "\mips.bat",2,True) 
'”2”の場合、ファイルを書き込み専用で開きます。
'”True”の場合は新しいファイルを作成します。
'--ここに実行したいバッチファイルの処理を記述します。--
    objOF.WriteLine "net use G: /delete /yes"
    objOF.WriteLine "net use G: \\MPS-SRV01\c$\send Mips2014 /user:Mips /PERSISTENT:NO"
'--ここまで--
objOF.Close

Set objOF = Nothing
 
On Error Resume Next
  Set objShell = WScript.CreateObject("WScript.Shell") 
  objShell.RUN "" & f_Name & "\mips.bat",0 '”0”の場合、画面非表示
On Error GoTo 0

WScript.sleep(1000)

objFS.DeleteFile "" & f_Name & "\mips.bat"

Set objFS = Nothing
Set objShell = Nothing

ファイルに直接パスワードを記述するため、パスワードを教えたくないという要望に反してテキストエディタ等でユーザーにパスワードが見えてしまう可能性があります。以前ご紹介させて頂いた「VBScriptをEXE形式にする方法」を使って実行ファイルを暗号化し、EXE化します。
生成したEXEのショートカットをユーザーのスタートアップフォルダに保存しておけば、起動時に実行されます。

他にも方法はありそうですが、とりあえず思いついた方法はこのような感じです。


サイズも小さく辞書代わりに手軽に使えます。
VBScriptを使い始めて割と最初の頃に購入しました。
直ぐに使えるサンプルも充実していて、初心者の方にもオススメです。
[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)

応援よろしくお願いします。
いいね ! してもらえると嬉しいです。

Twitter で

自己紹介

松田 大 と申しますm(_ _)m
インディーズでミュージシャンをやっていたのですがいつのまにか...

とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。

一昨年の3月に結婚し、尻敷かれ男子の仲間入りを果たしました(笑)

現在勤めているJTクラウドシステムでは、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発「 Excel VBA 」を活用した効率化ツールの開発を中心に「 ネットワーク・サーバー構築 」や「 Office365製品の導入支援 」、最近は、ホームページ制作に加え、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。

お問い合わせはJTクラウドシステムホームページからお願いします。
スポンサーリンク