
Windows資格情報の扱いで困ったことはありませんか? ネットワーク共有フォルダ のユーザーID、パスワードを教えたくない。けど、ローカルユーザーのパスワードを変更すると資格情報は消えてしまう…。というご相談を頂きました。ファイルサーバーや共有フォルダを運用する際、「Active Directory」でドメインに参加している端末であればあまり考えないのですが、数台の小規模な環境や、VPN接続で本部側はドメインに参加しているが、拠点側はドメインに参加していない場合など、色々な状況や環境があると思います。何かいい方法が無いか考えてみました。
目次
Windows資格情報のバックアップ、復元を活用する
資格情報の登録
「コントロールパネル」→「ユーザーアカウント」→「資格情報マネージャー」の「Windows資格情報」から「Windows資格情報の追加」をクリックします。
「インターネット又はネットワークのアドレス」に<IPアドレスorPC名(名前解決出来る場合)>を入力、ユーザー名に<ドメイン名>¥<ユーザー名>、パスワードに対象のドメインユーザーのパスワードを入力します。
ここではPC名、IPアドレスの前に”¥¥”マークは不要です。
上記の手順以外に、「エクスプローラー」で¥¥<IPアドレスorPC名(名前解決出来る場合)>にアクセスするとユーザー名とパスワードを要求さます。
「資格情報を記憶する」にチェックを入れれば、資格情報が保存されます。
資格情報のバックアップと復元
パスワード変更前の状態で資格情報のバックアップを行い、変更後、バックアップファイルから復元します。「資格情報マネージャー」の「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)
自己紹介
インディーズでミュージシャンをやっていたのですがいつのまにか…
とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。
「Excel VBA」からスタートして、Yamaha RTX シリーズで VPN環境構築、Hyper-V環境構築、Windowsアプリ開発などを経験した後、「 WordPress 」に出会い、どっぷりハマっています。
現在勤めているETBS合同会社では、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。
宮崎県 都城市 出身。東京都 葛飾区 在住。現在、代表兼二児のパパ。子育てを通じて、こどもたちにもプログラミングの楽しさに触れてほしいと思うようになり、「 こどもICTかつしか教室 」を開講中。最近は童心に帰り、簡単なゲーム制作なんかも楽しんでいます(^_^)。










コメントを残す