WSHがVistaのUACに阻まれる

このQ&Aのポイント
  • WSHを使用して特定の内容を追記し、バッチファイルをコピーする処理を作成していますが、VistaのUACによってうまく動作しません。
  • VistaのUACが有効な状態でも動作するようにする方法をWebで調査しましたが、解決策が見つかりませんでした。
  • UACを無効化すればファイルのコピーは成功しますが、UACを有効にした状態での動作を実現するにはどうすればよいでしょうか。ご教授いただけると幸いです。
回答を見る
  • ベストアンサー

作成したWSHがVistaのUACに阻まれる

はじめまして。 以下の処理を行う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のスタートアップ」フォルダにファイルをコピーするにはどのようにしたらよろしいのでしょうか。どなたか助けていただければ幸いです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.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" -----

pachi0123
質問者

お礼

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

関連するQ&A

  • UAC回避について

    vista 64bitを使用しています。 性質上仕方ないプログラム以外はUACを回避するためにCドライブ直下にフォルダを作成してインストールしたり Dドライブに「Software」というフォルダを作成してそこにインストールしたりしています。 これでUACが回避できるかと思ったのですが、デスクトップにあるショートカットアイコンにはしっかりとUACマーク (4色の盾のマークです)がくっついていますし、起動するとやはりUACの確認が出てしまいます。 やはりUACを回避しようとするとUAC自体をストップするしかないのでしょうか?

  • HTAとWSHを使った処理を作成したい。

    HTAとWSHを使った処理を作成したい。 HTAとWSHを使って次の様な処理を作成したいです。 (1)HTA側でプルダウンからドライブ(CドライブやDドライブ)を選択させWSHへ引渡す (2)WSH側では特定のファイルを受け取ったドライブへコピーする ・・・といった処理です。(初心者のため分からず悩んでます。) (1)(2)を実現するため、どういうソースをそれぞれに記述すればよいのでしょうか? お詳しい方どなたかよろしくお願い致します。

  • [WSH] ファイルのコピーができない

    こんにちは。 次のようなスクリプトでFTPフォルダにファイルをコピーしようとしたのですが、カレントフォルダにファイルがコピーされてしまうようです。 どうすれば、FTPフォルダにファイルをコピーできるのでしょうか? var objShell = WScript.CreateObject("Shell.Application"); var objFolder = objShell.NameSpace("ftp://user:password@sitename/directory/"); objFolder.CopyHere("C:\\WINNT\\win.ini"); WScript.Sleep(6000); ※下記のページを参考にさせていただき作成しました。http://homepage3.nifty.com/aya_js/wsh/wsh25.htm

  • 【困ってます】UACのような機能はXPにもありますか?【500枚】

    【困ってます】UACのような機能はXPにもありますか?【500枚】 Administratorでログインしてるにも関わらず、プログラムのアンインストールをしようとすると、「アクセス権がありません。システム管理者に問い合わせて下さい」と出ます。 いろいろ記事を探したところ、Vistaの場合、UACに何か関係あるように思えたのですが、私のPCはXPです。 心当たりとしては、こうなる少し前に、レジストリを検索して実行で「msconfig」と打ち、スタートアップの有効化・無効化をいじくりました。 管理者権限を正常に認識させ、プログラムのアンインストールをしたいです。 どうか、情報等お持ちでしたら、是非、ご回答お願いしますm(_ _)m

  • WSHでファイルを圧縮し削除する方法

    以下の条件の運用をWSHで実行できないかと考えています。 (1) D:\logフォルダ(固定フォルダ)内にある複数のファイル全てを ひとつのZIPファイルに圧縮し纏める。 (ZIPファイル名はスクリプトで自動付与され、元ファイル名の日付部分が付く事。) (2)圧縮したファイルをD:\log\Archive(出力先固定)に保存する。 (3)圧縮元のD:\logフォルダのファイルは全て削除する。 (4)処理が完了したら「完了しました」とメッセージ表示する。 <フォルダ構成例> D:\logフォルダ内 2007_12_17_1.log、2007_12_17_2.log、2007_12_17_3.log・・・ D:\log\Archive内 2007_12_16.ZIP、2007_12_15.ZIP・・・ ※この状態でWSHファイルを実行するとD:\logフォルダ内が空になり、D:\log\Archive内に2007_12_17.ZIPが作成される。 なおZIP圧縮後に元ファイルを削除しますが、ファイルサイズが大きくなった場合、圧縮に時間が掛かり、すぐに削除するとエラーになる点の考慮も必要です。 すいませんが、上記一連の処理を、1つのWSHファイルを実行するだけで実現するスクリプトをご教授ください。宜しくお願いします。

  • hostsファイルをコピーするバッチを実行するとデスクトップ上にtempフォルダが作成されてしまう

    hostsファイルをコピーするバッチファイルを作成しました。 バッチファイルの記述は以下のとおりです。 --------------------------------- @ECHO OFF CLS ECHO HOSTSファイルをアップデートします。 ECHO よろしければ、ENTERキーを押下してください。 ECHO 中止したい場合は、右上の×をクリックしてください。 PAUSE > NUL ECHO . ECHO HOSTSファイル コピー中... copy hosts %winDir%\system32\drivers\etc > NUL ECHO HOSTSファイル コピー終了 ECHO . ECHO アップデートが終了しました。 ECHO もう一度、ENTERキーを押下してください。 PAUSE > NUL EXIT -------------------------------------- バッチファイル(update.bat)とコピーするhostsファイルをまとめてexeファイルに変換し、exeファイルを実行してみると、hostsファイルは正常にコピーされるのですが同時にデスクトップ上に"c"というフォルダが作成されてしまいます。 cフォルダ内にはさらにwindowsフォルダが作成され、さらにwindowsフォルダ内にはtempフォルダが作成されていましたので、おそらくはc:\windowsフォルダ内のtempに記述されるべきものがユーザープロファイル内のデスクトップ上にできあがってしまうようなのですが、このcフォルダが作成されないようにするにはどうすればいいのでしょうか?

  • WSHを使ってファイルの作成日を変更できますか?

    WSH(Windows Script Host)を利用した処理についてですが、ある特定のファイルをコピーした後、そのコピーされたファイルの作成日を任意の日時に変更できるようにしたいと考えています。 日付の取得は可能なのですが、日付の変更も可能でしょうか? (WindowsXPを想定しています)

  • WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法

    WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

  • WSHでイベントログの自動保存

    以下の運用をWSHで実行できないかと考えています。 (1)Windows2003Serverの指定場所に実行日の日付の名前を付けたフォルダを自動作成する。 (フォルダ名例 D:\Eventlog\20071211) (2)Windows2003Serverのイベントログを全種類、名前を付けてエクスポートする。ファイル名は、 "今日の日付"_"イベントログ名".evt (ファイル名例 2007_12_11_Application.evt etc...) エクスポート先は、(1)で作成したフォルダとする。 (3)エクスポートしたログファイルを1ファイルずつZIP形式で圧縮する。 最終的に D:\Eventlog\20071211フォルダ内に 2007_12_11_Application.ZIP 2007_12_11_Security.ZIP .... という形で全てのイベントログが圧縮されて保存させたいです。 すいませんが、上記一連の処理をWSHで実現する方法をご教授ください。宜しくお願いします。

  • UACの権限昇格の確認ダイアログについて

    環境:Windows7+VS2012(VC++) WindowsXPの時代に、INIファイルをコピーするプログラムを作成したのですが、それをWindows7へ移植したのですが、インストールフォルダを ProgramFiles にすると、UACの権限昇格の確認ダイアログが表示されてしまいます。 これを表示させないようにすることは可能なのでしょうか?

専門家に質問してみよう