プロが教える店舗&オフィスのセキュリティ対策術

初めて質問させていただきます。よろしくお願いいたします。
現在、下記のコマンドと同じ処理をVBSで実現させたく考えておりますが知識が無く困っております。

net use \\node1\share1 /user:oji passwd

大変勝手なお願いなのですが、自分で勉強する時間がないので、ズバリのご回答頂けないでしょうか?

よろしくお願いいたします。

A 回答 (5件)

一応VBSでドライブの割り当てをチェックしてから割り当てるサンプルプログラムを作ってみました。


注:他のユーザ名で既に何処かの共有フォルダを使用している場合は、複数のユーザー名が使えないというエラーになります。その場合は、他のユーザー名での接続を切断する必要があります。
'空いているドライブ名にネットワークドライブを割り当てる
dim objFs, objNet, DriveLetter, Drive
dim i

Set objNet = WScript.CreateObject("WScript.Network")
Set objFs = WScript.CreateObject("Scripting.FileSystemObject")
DriveLetter="DEFGHIJKLMNOPQRSTUVWXYZ"
for i=1 to Len(DriveLetter)
Drive = Mid(DriveLetter,i,1)
if not objFs.DriveExists(Drive) then '指定したドライブが見つからない
Drive = Drive & ":"
exit for
end if
next
if Len(Drive) = 1 then
WScript.Echo "割り当てるべきドライブ名の空きがありません"
WScript.Quit(1)
end if
'WScript.Echo Drive
objNet.MapNetworkDrive Drive, "\\2000Server\share1",,"oji","ojipassword"
if objFs.FileExists(Drive & "\Target1.dat") then
WScript.Echo "YES" '実際の処理を書く
end if
objNet.RemoveNetworkDrive Drive
    • good
    • 0
この回答へのお礼

ありがとうございました。
おかげさまで解決できました。

やはり私の質問が説明不足でお手数をおかけしたみたいで申し訳ございませんでした。
以後気をつけますので機会がございましたら、今後ともよろしくお願いいたします。
また、別のカテゴリーになると思いますが恩返し出来るよう皆さんのご質問にも答えられるよう努力してみます。

ありがとうございました。

お礼日時:2005/03/22 09:03

>しかし\\2000Serverはドメイン外でローカルには“oji”というアカウントはあるが、クライアント使用者の個別アカウントは無いのでみんなで“oji”を使用し接続したい。


>そこで、“net use \\node1\share1 /user:oji passwd”
>を実行後、上記のファイルにアクセスさせる事にしたが、98ではNETコマンドで/userスイッチが使えなかったので
なるほど、
#3で言ってることと矛盾するように思われるかもしれませんが、
使用許可がなければ、直接はアクセスできませんね。
しかも、言われるとおり、98(95系)では、ユーザ指定してのNET USEができないので、#1の方法は多分使えませんね。
やはり、MapNetworkDriveを使うしかないと思います。(ネットドライブの解除にはRemoveNetworkDriveを使います)

サーバーの方で個別にユーザーを登録することができないのなら、98側で(立ち上げ時に)ojiでログインさせるという方法もあるかと思いますが、それもなかなか面倒ですよね。
特に問題なければ、該当共有フォルダでのアクセスにゲストを許可しておけば、ネットドライブを作成すること無しにアクセスできると思います。
    • good
    • 0

>ところでターゲットとなるリモート共有フォルダをマウントせずに実現させる事は無理なのでしょうか?


>最後にアンマウントすればOKなのですが・・・。
>素人考えで恐縮なのですが、もし可能なら空きドライブを探したりするコードとか必要無いような気がしますが如何でしょうか?
NET USE自体がネットドライブを作るコマンドなので、ネットドライブを作成せずにファイルやフォルダのアクセスができるか?
という質問なのだと思いますが、
\\ホストPC\共有フォルダ\…以下の指定でファイルやフォルダが特定できればネットワークドライブを作らずに直接操作できます。
なので、VBSとしては、ネットワークドライブを作らなくていけない理由はありません。
蛇足ですが
ネットワークドライブを作らなくてはならないような場合とは、それで、今までのソフトが(ドライブ名を指定して動くようなソフト)そのまま動くとか
¥¥から始まるファイル名に対応していないソフトを使うとかそういう場合に必要になります。
    • good
    • 0
この回答へのお礼

>NET USE自体がネットドライブを作るコマンドなので・・・
なるほど、そうだったんですか。
理解しました。ありがとうございます。

>ネットドライブを作成せずにファイルやフォルダのアクセスができるか?
まさにその通りです。最初の質問で何を目的としているのかを具体的に書くべきでした。今更ながらで大変申し訳ないのですが、説明させていただきますと、

\\2000Server\share1\Target1.dat
上記のような特定のファイルにWin98や2K、XPからユーザID、パスワード入力なしで出来ればネットワークドライブも作らずにアクセスさせたい。
しかし\\2000Serverはドメイン外でローカルには“oji”というアカウントはあるが、クライアント使用者の個別アカウントは無いのでみんなで“oji”を使用し接続したい。
そこで、“net use \\node1\share1 /user:oji passwd”
を実行後、上記のファイルにアクセスさせる事にしたが、98ではNETコマンドで/userスイッチが使えなかったので、VBSにすれば目的は達成できるのではないか?
と考え本件の内容で質問するにいたりました。

ひょっとしたらこの説明が無かった為に皆さんの貴重なお時間を無駄にさせてしまったかもしれません。
また全角100文字にも収められませんでした。
この場をお借りしてお詫び申し上げます。
申し訳ございませんでした。

お礼日時:2005/03/19 15:43

ほぼ同等なコマンドは以下になります


Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "E:", "\\node1\share1",,"oji",password
ドライブ名は空いているドライブを指定する必要があります。
ドライブ名が存在しているかどうかはFileSystemObjectのDriveExistsメソッドで調べることができます。
passwordは、埋め込む必要があります。
実行時に入力させるには、InputBoxを使います。
InputBoxを使った場合、入力された文字が見えてしまいますので、非表示にしたい(あるいは*に置き換えたい)と言う場合には、オートメーションオブジェクト(ActiveX)などを作成する必要があります。
ソースに書き込んでそれを隠蔽したい場合は、エンコーダーを使えば暗号化できます。
    • good
    • 0
この回答へのお礼

御礼が遅くなり申し訳ございません。
ありがとうございました。
私のレベルではご教示頂いた内容を試すには、やはり勉強しないと駄目みたいです。
時間が許す限りがんばって勉強します。

ところでターゲットとなるリモート共有フォルダをマウントせずに実現させる事は無理なのでしょうか?
最後にアンマウントすればOKなのですが・・・。
素人考えで恐縮なのですが、もし可能なら空きドライブを探したりするコードとか必要無いような気がしますが如何でしょうか?

お礼日時:2005/03/18 21:00

set WshShell = WScript.CreateObject("WScript.Shell")


WSHShell.Run "net use \\node1\share1 /user:oji passwd"
    • good
    • 1
この回答へのお礼

御礼が遅くなり申し訳ございません。
早速、連休明けにでも試してみます。
ありがとうございました。

お礼日時:2005/03/18 20:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!