dポイントプレゼントキャンペーン実施中!

はじめまして。
以下の処理を行うWSHを作成しているのですが、うまくいきません。色々Webも調べたのですが解決策が見あたらないためどなたかご教授いただければ幸いです。詳細は以下です。

■作成したいWSHの詳細
1. hostsファイルに特定の内容を追記する
2. 作成済みのバッチファイルを「AllUsersのスタートアップ」フォルダにコピーする
3. Windows2000、XP、Vista で実行して同じ結果が得られるようにする
4. VistaでUACが有効な状態でも動作するようにする

上記の条件1,2,3はクリアできたのですが条件4だけどうしてもクリアできません。下記ページにてスクリプト中に管理者権限に昇格する方法を
見つけ早速実行したところ、hostsファイルの書き換えはできるようになったものの、「AllUsersのスタートアップ」フォルダへのコピーに失敗してしまいます。
 ◆参考ページ
 http://ebi.dyndns.biz/diary/20080813.html

ちなみに「ファイルが見つかりません」というエラーが表示されます。ただ、UACを無効にした状態でVBSファイルを実行するとコピーは成功するので構文は間違っていないと考えております。UACを有効にした状態で、「AllUsersのスタートアップ」フォルダにファイルをコピーするにはどのようにしたらよろしいのでしょうか。どなたか助けていただければ幸いです。よろしくお願いします。

A 回答 (1件)

昇格に興味がありましたので試してみました。

結果として、WSH CopyFileで指定するパスはVistaとXPとで共通化できていませんが、VistaでAll Usersのスタートアップにバッチファイルをコピーすることはできました。

下記の三つのファイルを、各ファイル先頭のコメントのファイル名で作成しました。RunAs.vbsを実行してUACを許可すればCopied.batがコピーされます。

VistaのAll Usersのスタートアップのパスは、エクスプローラのShift+右クリックで現れるメニュー[パスとしてコピー]で調べました。UACの有効/無効で変わることはないように思いますが…。

Vista Ultimate SP1 と XP Pro SP3 で確認しました。

-----
rem C:\test\Copied.bat
echo Copied bat
pause
-----
'C:\test\CopyBat.vbs
Set FSO = CreateObject("Scripting.FileSystemObject")
'Vistaで成功
FSO.CopyFile "C:\test\Copied.bat", _
"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\"

'XPで成功
'FSO.CopyFile "C:\test\Copied.bat", _
' "C:\Documents and Settings\All Users\スタート メニュー\プログラム\'スタートアップ\"

WScript.echo "Copy Done"
-----
'C:\test\RunAs.vbs
Set sha=CreateObject("Shell.Application")
sha.ShellExecute "wscript.exe", "C:\test\CopyBat.vbs vista", "","runas"
-----
    • good
    • 0
この回答へのお礼

しばらくPCが使えなかったのでお礼が遅くなり申し訳ありません。
いただいた回答をヒントにやってみたところできました。
原因はコピー元パスをフルパスで指定していなかったことでした。
コピーするファイルはスクリプトファイルと同じフォルダにあるので、
ファイル名のみ記述していましたが、UACが有効だと管理者権限の
昇格が行われ、その関係でカレントディレクトリが変わるため
フルパスでないと認識されなかったようです。

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

お礼日時:2009/05/17 22:31

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