質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

Q&A

解決済

2回答

9544閲覧

管理者権限でのコマンドプロンプトの実行方法

sscs

総合スコア1

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

0グッド

0クリップ

投稿2020/06/17 08:38

編集2020/06/17 08:40

管理者権限を持たない一般ユーザーに管理者権限を必要とする制御を実施させるためのスクリプトを書いています。
下記処理実行後にデフォルトゲートウェイを変更するコマンドをSendKeysで送るコードを書いて実行したところ、
管理者としての権限がないとのメッセージが表示され拒否されてしまいます。

Set WshShell = CreateObject("Wscript.Shell")

Return = WshShell.Run("runas /user:管理者権限ID cmd.exe")
WScript.Sleep 100
WshShell.AppActivate "runas.exe"
WScript.Sleep 100

WshShell.SendKeys "管理者権限PW"
WScript.Sleep 100
WshShell.SendKeys "{enter}"
WScript.Sleep 100
WshShell.AppActivate "cmd"
WScript.Sleep 100

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mdj

2020/06/17 08:50

コマンドプロンプトを管理者として実行してもダメということですか?
sscs

2020/06/17 09:17

ありがとうございます。 右クリックメニューの管理者として実行の意味だと思いますが、そちらを実行すると管理者権限の入力を求められます。 今回そちらについて手動で入力せずに突破したいと考えております。 ユーザーアクセス制御部が関係していると思うのですが、上記の実現方法がわからず質問させて頂きました。 よろしくお願いいたします。
otn

2020/06/17 10:41

> 管理者としての権限がないとのメッセージが表示され どの段階でですか?
sscs

2020/06/17 12:11

ありがとうございます。 こちらのコードの後にsendkeysでデフォルトゲートウェイを変更するコマンドをいれて、さらにsendkeysでenterを入れたタイミングで表示されます。
otn

2020/06/17 13:01

「runasで開いたCMDウィンドウで」ということですか?
sscs

2020/06/17 13:30

言葉足らずで申し訳ありません。 記載の通りrunasで開いたcmdウィンドウでのメッセージとなります。 よろしくお願いいたします。
otn

2020/06/17 13:32

runasで開いたCMDウィンドウで、環境変数USERの値は意図したユーザー名ですか?
sscs

2020/06/17 13:41 編集

そちら未確認ですので、明日確認いたしますが、試しに上記コードにてrunasで入ってデスクトップ上に置いたexe(インストールに管理者権限の入力が必要なもの)を起動したところ管理者権限の入力なしで起動できました。 よって管理者でcmdを開けてはいると考えておりました。 関係なかったら申し訳ございません。 よろしくお願いいたします。
otn

2020/06/17 13:46

ということは、管理者権限でのCMDの起動自体は成功していて、 > こちらのコードの後にsendkeysでデフォルトゲートウェイを変更するコマンドをいれて、さらにsendkeysでenterを入れたタイミングで表示されます。 の部分に問題があるのでしょうね。 なんか、質問文の記述と関係ない話になってます。質問文を書き直しては?
sscs

2020/06/17 13:57

こちらの伝え方が悪く申し訳ありません。 手動にて右クリックメニューより管理者権限でcmdを起動し、実行したいコマンドを手動入力すると意図した動きで反映されるため、VBSでのコマンドプロンプトの起動方法が根本の問題かと考え質問させて頂いた次第でございます。
guest

回答2

0

ありがとうございました。
結果としてスクリプト単体での実装は諦め、ActiveDirectoryのスタートアップスクリプトを用いてnetshコマンドを実行するスクリプトを流すことにしました。
1番詳しく回答を書いて頂いた最後の方をベストアンサーにさせて頂きます。

投稿2020/06/25 12:13

sscs

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

まず、前提のお話ですが一般ユーザーで実行されたスクリプト(A)から、RunAsコマンドで起動されたcmd.exe(B)へのSendKeyは自動的に失敗します。
理由はセキュリティの観点から、そういう動作をOSが禁止しているからです。
その為、GUI操作でデフォルトゲートウェイ変更操作をSendKeyで代用する案は自動的に失敗します。
対処案として、考えられるのは以下の2つかと思います。

  1. RunAsコマンドでcmd.exeでは無く、Sendkeyを含んだスクリプトを呼び出す。
  2. RunAsコマンドで、Netshコマンドを使ったデフォルトゲートウェイ変更スクリプトを呼び出す。

お勧めとしては、2案です。
何もGUI操作をSendKeyで代用させずとも、ネットワーク設定の変更はNetshコマンドで可能です。
こちらを使用する事をお勧めします。

投稿2020/06/25 11:57

Takeda_Kazuhito

総合スコア369

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問