トップ回答者
processを使って管理者権限でのコマンド実行と標準出力のリダイレクト

質問
-
お世話になります
タイトル通りなのですが、processの挙動がどうも管理者権限が必要なコマンドだとうまく動きません
この例では「route print」にすれば出来ますが「route add」にするとどうしても動きません。
中段でコメントアウトしている管理者権限のあるIDとパスワードでの起動を試みた所、②でブレークポイントで止めてwaitforexitの行でmyprocessの内容をみたところ、exit codeがどうしても「1」となり、標準出力やエラー出力もnullになっているようです。
管理者権限のユーザIDを指定したprocessでコマンド実行は出来ないのでしょうか?
すみませんがご教授お願い致します。
myprocess.StartInfo.FileName = "route"
myprocess.StartInfo.Arguments = "add" ' ----------①
myprocess.StartInfo.RedirectStandardOutput = True
myprocess.StartInfo.RedirectStandardError = True
myprocess.StartInfo.CreateNoWindow = False
'myprocess.StartInfo.Verb = "runas"
'myprocess.StartInfo.UserName = "admin"
'myprocess.StartInfo.LoadUserProfile = True
'Dim pw As SecureString = New SecureString
'For Each ch In "dummy".ToCharArray()
' pw.AppendChar(ch)
'Next
'myprocess.StartInfo.Password = pw
myprocess.StartInfo.UseShellExecute = False
Try
Dim line As String
Dim fileOut As String
Dim envline As Array
Dim myGuid As Guid
Dim cnt As Integer = 0
Dim dt As DateTime
myprocess.Start() '------------------②
myprocess.WaitForExit()
If myprocess.ExitCode <> 0 Then
Response.Redirect("ErrorPage.aspx")
End If
Do Until myprocess.StandardOutput.EndOfStream
line = myprocess.StandardOutput.ReadLine()
Loop
Catch ex As Exception
Console.WriteLine("Error! {0}", ex.Message)
If ex.Message <> "Thread was being aborted." Then
Response.Redirect("ErrorPage.aspx")
End If
Finally
myprocess.Dispose()
End Try
Response.Redirect("NextPage.aspx")
- 編集済み ともだまさひろ 2013年9月19日 12:55 コメントを見やすく
回答
すべての返信
-
おせわになります
サーバ側の設定でUACを殺してもらったのでVerbs="runas"の必要をなくしましたが、管理者に成り代わってのプロセス実行でまだ別なもんだが出てしまいます。
ローカルPCでの挙動はOKなのですが、サーバで同じものを実行するとコマンドの実行結果が-1073741502で返ってきます。これは実際に実行したいexe(製品のexeです)でも仮にnotepadに変更しても同じくPCはOK、サーバではNGでした。
このエラーコードで検索してみましたが
0xC0000142,-1073741502,STATUS_DLL_INIT_FAILED
ということだったのでDLLの初期化失敗という事なのでしょうが、どのDLLが原因なのかさっぱりわかりません。
何かヒントでもいただけないでしょうか?
よろしくお願いいたします。
(追記)
//ja.softuses.com/222036
上のページがこのエラーを解説していそうなのですが自動翻訳でよくわかりませんでした・・- 編集済み ともだまさひろ 2013年9月20日 6:09
-
ShiroYuki_Motさま
adminユーザはサーバーローカルのAdministratorグループに所属しています。
debug用に出力されたコンソールログに実行コマンドを表示しているのですが、そのコマンドをそのユーザでrunasしたコマンドプロンプトで下記のように実行したところ、普通にエラー無く実行できます。
リモートデスクトップユーザでログオン→コマンドプロンプト→runas /usr:admin→パスワードの入力→
出力されたFileとargumentをコマンドプロンプトに貼り付けて実行→期待された結果が出力される。
こんな状況で困っています・・・・。