• 締切済み

windows8でのバッチの動き

利用者(クライアント)のwindows8.1マシン(エディションは様々。また、32bitも64bitも有り)の Program FilesにインストールされたAというプログラムの中にあるBフォルダの配下の prod.infというファイルのみを私が用意したprod.infに置き換えたいと考え、 hogehogeというファイルサーバのhoge というフォルダに私が用意したprod.infを置いておき、それを利用者のパソコンの中の C:\Program Files\A\Bの配下にあるprod.inf に対して上書きさせたいと考えております。 そこで copy \\hogehoge\hoge\prod.inf %UserProfile%\Desktop\prod.inf /Y copy %UserProfile%\Desktop\prod.inf C:\Program Files\A\B\prod.inf /Y というバッチを作ったところ、 ファイルサーバから利用者のデスクトップに prod.infがコピーされるところまではうまくいった(1行目のみうまく動いた) のですが、2行目がエラーが出るわけでもなく、しかしprod.inf は 上書きされておりませんでした。 ちなみにこの利用者のPCのデスクトップに置いたprod.infを 手でC:\Program Files\A\B\prod.inf にコピーした場合はコピー時に表示されたダイアログで 「ファイルを置き換える」を選択すると、 「対象のフォルダーへのアクセスは拒否されました。」 「このフォーだーへ移動するには管理者の権限が必要です」と出て、 「続行」を押すと上書きが完了します。 #もちろん管理者権限のあるユーザでPCにログインして作業しています。 このことから、何か別の管理者の権限を付与する必要があるのだと思います。 同様のことをwindows7で行う時はvbsファイルを用意して(VBScriptを用いて) 管理者権限に昇格させておりましたが、windows8ではできず… ここで躓いてしまいました。 お知恵をお貸し頂けましたら幸いです。 どうぞ宜しくお願い致します。

みんなの回答

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.3

No.2の追記画像です。

i1z2u3m4i
質問者

お礼

追記画像も頂き、ありがとうございます。 分かりやすいよう、丁寧にご説明頂き、 ありがとうございます!! まだやりたいことができてはおりませんが、 もう少し頑張ってみます。 取り急ぎ、追記画像を頂いた御礼の書込をさせて頂きました。

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.2

No.1の補足です。 「最上位の特権で実行する」タスクを作成してWクリックすればいいです。 バッチファイルを実行していることと同じ処理になります。 「最上位の特権で実行する」設定は添付画像参照。 実行プログラムはNo.3に画像を添付します。 「参照」ボタンを押して、任意のscriptや実行プログラムを指定してください。

i1z2u3m4i
質問者

お礼

さっそくに補足を頂きありがとうございます!! 土日でwindows8環境が手元になかったため、御礼が遅くなり申し訳ございません。 さっそく本日試してみました。 タスクに「最上位の特権で実行する」というものがあることを 初めて知りました。 勉強になりました。ありがとうございます。 もう1点お教えください。 タスクはユーザに配布できるのでしょうか? 配布する対象者はは windowsVista/7/8/8.1 のため、タスクを作成する際に 条件の分岐をさせる必要があるかと思いましたが、 お教え頂いた 構成:windows8.1 で作成した後、どのようにすればよいか 今日一日調べたのですがわからず… タスクの実行時に使うユーザーアカウントも 複数の利用者のユーザアカウントは 勝手気ままに作られているので 特定できないため、「%UserProfile%」のように 書けばなんとかできないかと思い試したものの 見つけることができず… 勉強不足で申し訳ございません。 もし可能であればもう少しお知恵を 頂けましたら幸いです。 どうぞ宜しくお願い致します。

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.1

次の方法ではどうでしょうか。 方法1と方法2は、たどる方法が異なりますが、行なっていることは同じことです。 方法1 スタートメニューで cmd と入力して、表示された「コマンドプロンプト」を右クリック -> 「管理者として実行」 を実行 -> コマンド入力画面で xxx.vbs を実行。 xxx.vbsはフルpathで入力してください。 添付画像参照。 方法2 デスクトップにて「スタート」アイコンを右クリック ->表示されたメニューの 「コマンドプロンプト(管理者)」をクリック -> コマンド入力画面で xxx.vbs を実行。 xxx.vbsはフルpathで入力してください。

i1z2u3m4i
質問者

お礼

さっそくの書込ありがとうございます! コマンドプロンプトの管理者として実行、も 考えたのですが、Windows8.1の利用者に 方法1でご提案頂いた方法を案内致しましたところ 「そんな難しいことを言われても分からない。今までみたいにWクリックでぱぱっと できるようにして欲しい。」 と言われてしまい、バッチファイルかvbsでなんとかしようと四苦八苦している次第でして 昨日からずっと調べて、試して、を一人で続けていてうまくいかずぐったりしておりましたので、 今日質問を書込させて頂いて、今日中に回答の書込をして頂けて 心強くとてもありがたいです。 ちなみに今試しておりましたのが、ネットでVBSを開くだけで必ず「管理者として実行」になる、 という記事から引用させて頂いた ------------------------------------------------------- Function runasCheck() Dim strScriptPathName Dim flgRunasMode Dim objWMI, osInfo, flag, objShell, os Dim strArgs Dim args Set args = WScript.Arguments flgRunasMode = False strArgs = "" ' フラグの取得 If args.Count > 0 Then If UCase(args.item(0)) = "/RUNAS" Then flgRunasMode = True End If strArgs = strArgs & " " & args.item(0) End If Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set osInfo = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem") flag = false For Each os in osInfo If Left(os.Version, 3) >= 6.0 Then flag = True End If Next Set objShell = CreateObject("Shell.Application") If flgRunasMode = False Then If flag = True Then objShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """" & " /RUNAS " & strArgs, _ "", "runas", 1 Wscript.Quit End If End If End Function Call runasCheck() ------------------------------------------------ を試して、うまくいかなかったところです。 引き続きご負担でなければどうぞ宜しくお願い致します。

関連するQ&A