コマンドプロンプトで実行したいコマンドが
「route add ***.***.***.*** mask 255.255.255.255 ***.***.***.***」 (*は、任意のIP)
だとします。
XPでは問題ないですが、Vista以降だと、管理者権限が必要なコマンドのため、
そもそもコマンドプロンプト自体を「管理者として実行」モードで起動する必要があります。
上記を、手作業で行う場合は、それで解決しますが、
同じ事を、VBのコードから実行したい場合、
System.Diagnostics.Process.Start
を使い、(以下サンプルコード)
---------------------------
Dim psi As New System.Diagnostics.ProcessStartInfo()
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
psi.UseShellExecute = False
psi.CreateNoWindow = True
psi.Arguments = "/c route add ***.***.***.*** mask 255.255.255.255 ***.***.***.***"
Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi)
p.WaitForExit()
-----------------------------------------------------------
とすると、XPでは、管理者権限を問われないので実行できますが、
Vista以降だと、コマンドが管理者権限で実行されていないためか実行が完了せず、コマンドの内容も行われていません。(route addコマンドの記述にミスは無いとします。)
Vista以降の場合、手作業で、コマンドプロンプトを右クリックして「管理者として実行」を選んで起動し、コマンドを実行するのと同じ事を、
VBのコードから行うには、どうしたらいいのでしょうか?
分かる方、教えてください。お願いします。
No.1ベストアンサー
- 回答日時:
この回答への補足
回答ありがとうございます。
「runas」は、既に試しています。
しかし、Vista以降の環境でこのオプションを使って実行すると
「他のユーザーとして実行する」という旨の
ユーザー名とパスワードを入力させるダイアログが表示されてしまいます。
例えばVista以降のPCで、右クリックして「管理者として実行」を選んでも
管理者のユーザー名とパスワードを入力させるダイアログは表示されません。
「許可」か「拒否」かだけを問う画面が表示されるだけです。
その様にしたいのです。
すみません。再度試した結果、
ユーザーの選択を要求されるダイアログはXPの環境だけで出て、
Vista以降の環境では、求めていた通りの「許可」を問うだけのダイアログになっていました。
私の勘違いでした。
OSを判断して、XPでは、RunAs を指定しないコードにすれば解決しそうです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】甲子園での思い出の残し方
「球場の砂を持って帰る」はもう古いと思った高校球児が、甲子園で負けた際に、思い出に残そうと思って行ったこと
-
Excelのマクロは管理者でないと実行できませんか
Excel(エクセル)
-
runas実行した時にきかれるパスワードを手入力以外で読み込ませたい
その他(プログラミング・Web制作)
-
VB6のプロジェクトロードエラーについて
Visual Basic(VBA)
-
-
4
VB.NETでのDOSコマンドを実行について
Visual Basic(VBA)
-
5
VB.NETでコマンドプロンプトの操作
Visual Basic(VBA)
-
6
エクセルvbaでdocuworksprinterの出力先を設定
Visual Basic(VBA)
-
7
コマンドプロンプト
Visual Basic(VBA)
-
8
VBAのTextBoxに半角数字のみ入力したい
Visual Basic(VBA)
-
9
Process.Startで起動したアプリを最大化したいです。VB.NET
Visual Basic(VBA)
-
10
VB.NETでDOSコマンドの複数実行
Visual Basic(VBA)
-
11
VBAでInputBoxの再入力をさせるには?
Visual Basic(VBA)
-
12
runasで起動したコマンドプロンプトについて
その他(プログラミング・Web制作)
-
13
VBフォームアプリケーションにおけるcmdプロンプトの実行
Visual Basic(VBA)
-
14
セルの文字を「印刷時だけ非表示」にしたいです。
Excel(エクセル)
-
15
VBAでバッチファイルを1つ実行する方法がうまくいきません
Visual Basic(VBA)
-
16
【VBA】ファイルパスに半角スペースが入ると、VBAが動かない
Excel(エクセル)
-
17
FileCopy時のエラー
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでタイトルバーを非表示...
-
staticのメモリ共有について
-
VBプログラムから「管理者とし...
-
Javaでping
-
SYSTEM関数等を用いて複数のコ...
-
Java VM のヒープサイズについて
-
batよりjava起動
-
ShellExecuteでDOSコマンド実行...
-
ブレークポイントを設置してな...
-
ShellExecuteEx関数の使い方に...
-
GDB デバッガでの変数の表示に...
-
コマンドを実行してコマンドラ...
-
ACCESS VBA からエクセルを最小化
-
MacOS:ターミナルではNPMのコ...
-
ShellExecuteの使い方について
-
CloudSticky.jarが起動しない。
-
Eclipseで、プロジェクト名のと...
-
split関数で区切り文字がない場合
-
jdbcでinsert,delete,createをe...
-
html上で、バッチやexeファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBプログラムから「管理者とし...
-
ACCESSでタイトルバーを非表示...
-
jarファイルをバッチで実行させ...
-
ShellExecuteの使い方について
-
batよりjava起動
-
windowsのタスクスケジューラを...
-
32bitアプリから64bitアプリの...
-
windows power shell icacl
-
SYSTEM関数等を用いて複数のコ...
-
CloudSticky.jarが起動しない。
-
MacOS:ターミナルではNPMのコ...
-
C# コマンドプロンプト画面で表...
-
ACCESS VBA からエクセルを最小化
-
Javaプログラムでコマンド実行...
-
Java VM のヒープサイズについて
-
Tomcatのメモリー使用量が知りたい
-
「SimpleEntry を型に解決でき...
-
C++ で DIR コマンド
-
Java 特定プロセス名前取得方法...
-
staticのメモリ共有について
おすすめ情報