自分のセンスや笑いの好みに影響を受けた作品を教えて

コマンドプロンプトで実行したいコマンドが
「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のコードから行うには、どうしたらいいのでしょうか?
分かる方、教えてください。お願いします。

A 回答 (1件)

この回答への補足

回答ありがとうございます。

「runas」は、既に試しています。
しかし、Vista以降の環境でこのオプションを使って実行すると

「他のユーザーとして実行する」という旨の
ユーザー名とパスワードを入力させるダイアログが表示されてしまいます。

例えばVista以降のPCで、右クリックして「管理者として実行」を選んでも
管理者のユーザー名とパスワードを入力させるダイアログは表示されません。
「許可」か「拒否」かだけを問う画面が表示されるだけです。

その様にしたいのです。

補足日時:2012/01/31 19:51
    • good
    • 0
この回答へのお礼

すみません。再度試した結果、
ユーザーの選択を要求されるダイアログはXPの環境だけで出て、
Vista以降の環境では、求めていた通りの「許可」を問うだけのダイアログになっていました。

私の勘違いでした。

OSを判断して、XPでは、RunAs を指定しないコードにすれば解決しそうです。
ありがとうございました。

お礼日時:2012/01/31 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報