みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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ではできず…
ここで躓いてしまいました。

お知恵をお貸し頂けましたら幸いです。
どうぞ宜しくお願い致します。

投稿日時 - 2014-08-01 15:11:59

QNo.8700530

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

No.2の追記画像です。

投稿日時 - 2014-08-01 18:24:45

お礼

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

投稿日時 - 2014-08-04 16:43:16

ANo.2

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

投稿日時 - 2014-08-01 18:23:40

お礼

さっそくに補足を頂きありがとうございます!!
土日でwindows8環境が手元になかったため、御礼が遅くなり申し訳ございません。

さっそく本日試してみました。
タスクに「最上位の特権で実行する」というものがあることを
初めて知りました。
勉強になりました。ありがとうございます。

もう1点お教えください。
タスクはユーザに配布できるのでしょうか?

配布する対象者はは
windowsVista/7/8/8.1
のため、タスクを作成する際に
条件の分岐をさせる必要があるかと思いましたが、
お教え頂いた
構成:windows8.1
で作成した後、どのようにすればよいか
今日一日調べたのですがわからず…

タスクの実行時に使うユーザーアカウントも
複数の利用者のユーザアカウントは
勝手気ままに作られているので
特定できないため、「%UserProfile%」のように
書けばなんとかできないかと思い試したものの
見つけることができず…

勉強不足で申し訳ございません。
もし可能であればもう少しお知恵を
頂けましたら幸いです。

どうぞ宜しくお願い致します。

投稿日時 - 2014-08-04 16:41:51

ANo.1

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

投稿日時 - 2014-08-01 17:24:16

お礼

さっそくの書込ありがとうございます!

コマンドプロンプトの管理者として実行、も
考えたのですが、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()

------------------------------------------------
を試して、うまくいかなかったところです。

引き続きご負担でなければどうぞ宜しくお願い致します。

投稿日時 - 2014-08-01 17:57:07

あなたにオススメの質問