• 締切済み

ASP.netよりAdministratorでEXEを実行できません。

ASP.netよりAdministratorでEXEを実行できません。 ------------------------------ ■環境 Windows2003 Server IIS 6.0 SSL使用 .net Framework 2.0以降 開発言語 VB.net ------------------------------ いつもお世話になっております。 ASP.netでのローカルユーザ管理(パスワードの変更)を行いたいと思い、 以前質問をさせていただいたきました。 http://questionbox.jp.msn.com/qa5886000.html VS2005での開発環境ではうまくいったのですが、Windows2003 Server、IIS 6.0 の環境で実行したところ、ASP.netよりAdministratorでEXEを実行できません でした。 EXEからの戻りコードを調べたところ「-1066598274」が返ってきています。 EXEが実行できていないように思うのですが、原因がわかりません。 解決方法をお教えください。 Sub Exec() Dim strMsg As String = "" Dim strPass = "adminpass" Try Dim pinf As New ProcessStartInfo("C:\WindowsApplication1.exe", "") pinf.UserName = "Administrator" pinf.Password = New SecureString() For Each c As Char In strPass.ToCharArray() pinf.Password.AppendChar(c) Next pinf.UseShellExecute = False Using proc As Process = Process.Start(pinf) Call proc.WaitForExit() Select Case proc.ExitCode Case 0 : strMsg = "正常終了" Case Else : strMsg = "Err:" & proc.ExitCode End Select End Using Catch ex As Exception strMsg = "予期せぬエラー" Finally ClientScript.RegisterStartupScript(Page.GetType(), "s", String.Format("alert('{0}');", strMsg), True) End Try End Sub

みんなの回答

回答No.1

proc.ExitCodeの戻り値が-1066598274ってことですか? それはログイン認証でも、パスワード変更でもですか? もしそうであれば、WindowsApplication1.exeをそのWebを配置するルート以下のパスに置いたら実行できませんか? そちら側がどのような状態でそのエラーを番号認識したかも不明です。 またご自分で、WindowsApplication1.exeの中の引数チェックなどが走っているかなども調査されましたか? 行った調査や自分なりの推察、そしてその根拠などなど、、、 もっと詳細な状況を公開してください。 (勝手な推測ですが、環境の設定を整えることで解決するかも知れません。)

kazkaz11
質問者

お礼

1050YENさん、回答ありがおうございます。 補足にて追記したのですが、内容確認中のまま1日たってしまったので、別で質問を作成しました。

kazkaz11
質問者

補足

1050YENさん、回答ありがおうございます。 proc.ExitCodeの戻り値が-1066598274です。 EXEが実行されているかを調べるために、処理の始めと処理の途中でログを 書き出すようにしたのですが、ログが書き出されていませんでした。 イベントビューアのアプリケーションログを確認したところ、 以下のようなログが出力されていました。 --------------------------------------------------- イベントの種類: 情報 イベント ソース: Application Error イベント カテゴリ: (100) イベント ID: 1004 日付: 2010/05/23 時刻: 15:44:21 ユーザー: N/A コンピュータ: xxxxxx 説明: 処理待ちエラーの報告: エラー発生アプリケーション user_auth_exe.exe、バージョン 1.0.0.0、エラー発生モジュール kernel32.dll、バージョン 5.2.3790.3959、エラー発生アドレス 0x0000bee7.

関連するQ&A

  • ASP.netよりAdministratorでEXEを実行できません。

    ASP.netよりAdministratorでEXEを実行できません。 「http://questionbox.jp.msn.com/qa5913450.html」の質問に対する追加情報です。 (ソースは上記質問(URL)に記載しているため省略します。) ------------------------------ ■環境 Windows2003 Server IIS 6.0 SSL使用 .net Framework 2.0以降 開発言語 VB.net ------------------------------ VS2005での開発環境では正常に動作するのですが、サーバではEXEの実行が行えません。 proc.ExitCodeの戻り値が-1066598274です。 EXEが実行されているかを調べるために、処理の始めと処理の途中でログを 書き出すようにしたのですが、ログが書き出されていませんでした。 イベントビューアのアプリケーションログを確認したところ、以下のようなログが出力されていました。 Webを配置するルート以下のパスに置いて実行しても同様のエラーがでます。 リモートデスクトップでサーバにログインし、コマンドラインでEXEを実行したところ、正常にログが出力されたので、EXEのプログラムには問題はないと思われます。 サーバ環境ではなく、ローカルPC(Windows XP)にてIIS5.1でテスト環境を作成し、実行したところ同様にイベントビューアのアプリケーションログでエラーが発生しました。 試しに別のEXEを指定して実行しても同様でした。 IIS Admin Service はデスクトップと対話するアプリケーションを許可しませんとの情報により (http://support.microsoft.com/kb/555134/ja) IIS Admin Service の「対話の 許可 サービス」にチェックをしましたが状況はかわりません。 動作環境によりASP.netからEXEが実行できないのでしょうか? 環境設定で必要なものがありましたらお教えください。 --------------------------------------------------- イベントの種類:情報 イベント ソース:Application Error イベント カテゴリ:(100) イベント ID:1004 日付:2010/05/23 時刻:15:44:21 ユーザー:N/A コンピュータ:xxxxxx 説明: 処理待ちエラーの報告: エラー発生アプリケーション WindowsApplication1.exe、バージョン 1.0.0.0、エラー発生モジュール kernel32.dll、バージョン 5.2.3790.3959、エラー発生アドレス 0x0000bee7. ---------------------------------------------------

  • ASPからexeプログラムへ引数

    ASPの超初心者です。 IIS上のASPから WWWから変数での文字列を test.exeに、引数を与えて実行することは可能ですか? また、それを実行した結果をASPでWWWに表示させたいの ですが、可能ですか? よろしければ、簡単な方法や関数等を教えてくだされば 幸いです。 よろしくお願いします。

  • ASP.NETでRSH実行について

    ASP.NETでWebアプリケーションを作っているのですが、RSHでLinuxのシェルを実行しようとしたのですがうまくいきません。 (ちゃんと実行されずスキップされます) 普通のDosの実行は出来ます。 RSHの実行結果のDosの標準出力をTextBoxに出したいと思ってます。 System.Diagnostics.ProcessStartInfoで行っています。 同じソースをVBアプリで実行するとうまくいきました。 IIS設定でWeb公開しようとするとだめみたいです。 IISのセキュリティとか何か設定が必要なのでしょうか? OSはWindowsXP ProでVS.NET2003を使ってます。

  • ASPとASP.NETとASP.NET2.0の違い

    Web開発初心者です。 帳票をPDF表示するWebアプリケーションを開発することになり、 言語はASPを使用することになりました。 そこで ASP ASP.NET ASP.NET2.0 の違いをご存知の方がいらっしゃいましたら教えていただけますでしょうか。 それぞれIIS以外に必要な実行環境、ツール等も教えていただけると助かります。 不明瞭な箇所がありましたら説明させていただきます。 すいませんがよろしくお願いします。

  • ASP.NETでの実行環境

    現在ASP.NETの勉強をしている最中です。 そこで聞きたいのが、たとえば簡単なWEBサービスの実行環境(テスト環境ではなく)を 作りたいと思った場合にサーバが用意できない場合は XPProにIISを設定しそこにほかのPCからアクセスし実行するような 環境でも問題ないものなのでしょうか? 簡単に言えばXPProを簡単なWEBサーバとして使用するということなのですが・・・ そういうことは可能なのでしょうか?

  • ASP.NETからEXCEL起動

    初投稿です。よろしくお願いします。 現在、諸事の事情により、ASP.NETからサーバ上のEXCELのマクロを実行しようとしてますが、起動できずに困っております。 過去ログを探してみて、偽装とDCOMの構成は行いました。 EXCELが実行できるならと思い、ATコマンドでもbatでもたたいてみましたが、 マクロの実行はできませんでした。 諸兄のご助言をお願いしたく思います。 【環境】 OS:WinXP Pro SP2 VisualStadio.Net 2003 Framework1.1 IIS 5.1 MicrosoftOffice 2003 【やりたいこと】 ASP.NETで作成したプログラム上でブラウザのボタンを押したとき、 サーバーのC:\check.xlsを Dim p As Process = Process.Start("EXCEL", "C:\check.xls") で起動し、 書いてあるマクロを実行したい。 【現状】 タスクマネージャで確認したところ、 EXCEL.exe ユーザ名ASPNET は表示されたが マクロは動かなかった。 デバッグで System.Security.Principal.WindowsIdentity.GetCurrent().Name を行ったところ、"マシン名\testuser"となり、 偽装は成功しているよう。 【準備したこと】 1.DCOMの構成のユーザ追加: 管理ツール/コンポーネントサービス/コンポーネントサービス/コンピュータ/マイコンピュータ/DCOMの構成/Microsoft Excel アプリケーションのプロパティ/セキュリティ/ の 「起動とアクティブ化のアクセス許可」のカスタマイズ項目を編集し、testuser とASPNETを追加 「アクセス許可」のカスタマイズ項目を編集し、testuserと ASPNETを追加 2.偽装の有効化: Web.configに <identity impersonate="true" userName="testuser" password="testuser" /> を追加 testuserはAdministrator権限 何とかしたいのですが、方法のご指導をよろしくお願いします。

  • 現在、ASP.NET(言語:VB.NET)にて、

    現在、ASP.NET(言語:VB.NET)にて、 データ参照、更新系のWebアプリケーションを自学しているものですが、 DAC(Data Access Componet)を利用してSQL Serverのデータを取得、更新する際、 コネクションの閉じ方が分からず困っています。 DACを使用しない場合は、 下記のようにSQLConnectionをUsing句で明示的に括り、 Closeさせることができますが、 DACを使用した場合はTableAdapterからSQLConnectionを取得できず、 同様の実装方法を採れません。 ------------------ Dim mySelectQuery As String = "SELECT * FROM Categories ORDER BY CategoryID" Dim myConnectString As String = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer" Dim myCommand As New SqlCommand(mySelectQuery) Using conn AS SqlConnection = New SqlConnection(myConnectString) myCommand.Connection =conn myCommand.CommandTimeout = 15 myCommand.CommandType = CommandType.Text myCommand.ExecuteNonQuery() End Using ------------------ 一方、DACを使用した場合は下記のように実装しております。 ------------------ Dim ta As New SystemError_OriginalTableAdapters.OriginalTableAdapter Dim dt As New SystemError_OriginalDataTable ta.FillBy(dt, id) ' テーブルアダプターのFillメソッドを呼び出すのみで、Closeしているかどうかがわからない。 ------------------ DACでは、Fillメソッド実行後に必ずSQLConnectionがCloseされることが 保証されているなら問題は無いのですが、 そうでない場合、テーブルアダプターからSQLConnectionを取得して、 明示的にCloseさせてやりたいと思っています。 DACを使用した場合のSQLConnectionの取得方法、 もしくはSQLConnectionのCloseの方法についてご教授願えないでしょうか? 以上、宜しくお願いします。

  • ストアドプロシージャの実行について

    asp.net から sqlserver のストアドプロシージャを実行させる勉強をしています。 作成されているはずのストアドプロシージャを実行できずに困っています。 webformにテキストボックス、ボタン、データグリッドを貼り付け、ストアドプロシージャを作成し下記のプログラムを実行させるのですが上手くいきません。 (テキストボックスに任意で入力された数値のデータをボタンを押すと表示するものです) <エラー内容>→ ストアド プロシージャ 'proc1' が見つかりませんでした Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New SqlConnection Dim cmd As New SqlCommand cn.ConnectionString = "接続文字列" cmd.Connection = cn cmd.CommandText = "proc1" cmd.CommandType = System.Data.CommandType.StoredProcedure Dim p1 As SqlParameter = cmd.Parameters.Add("@param1", System.Data.SqlDbType.Int) p1.Value = TextBox1.Text cn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader DataGrid2.DataSource = dr DataGrid2.DataBind() dr.Close() cn.Close() end sub ストアドproc1(場所:Northwind)の内容↓ CREATE procedure proc1 @param1 int as select * from products where categoryID=@param1 どなたか原因のわかる方がいれば、宜しくお願いします。

  • ASPからVBScriptの実行

    ASPから下のVBScriptを実行使用とすると "500"Internal Server Error が出力されて困ってます。 へるぷみー Dim objWSHShell Set objWSHShell=WScript.CreateObject("WScript.Shell") objWSHShell.Run "cscript.exe d:\test.bat" objWSHShell=Nothing

  • asp.netでのセッションを使用したログイン

    asp.netでmssql server を利用してログイン機能を実装しました。 以下のようなコードでmssqlに保存してあるIDとパスが一致すれば 以降の画面ではセッションにID、パスが保存され page loadでセッションにID、パスがなかればページがすすんでいけないような設定にしています。 機能は問題なく動作しているのですがこのような仕様はセキュリティ上問題はないのでしょうか。 商用サイトではないのですが、ある程度広域に向けたサイトを構築しようと考えておりまして、セキュリティ向上のため、工夫できるようなことがあればご意見いただきたいです。 よろしくお願いいたします。 ************************************************************** ログインページ ************************************************************** Dim staffid As Integer Dim staffname As String Dim adminflag As Boolean Protected Sub btnLogon_Click(ByVal sender As Object, ByVal e As System.EventArgs) 'ユーザーIDの入力チェック If txtUserID.Text = "" Then lblErr.Text = "ユーザーIDを入力してください。" Return End If 'パスワードの入力チェック If txtpassword.Text = "" Then lblErr.Text = "パスワードを入力してください。" Return End If 'ユーザーとパスワードの検証 If Not CheckUserPassword(txtUserID.Text, txtpassword.Text) Then lblErr.Text = "ユーザーIDまたはパスワードが違います。" Return End If 'セッション変数へ値をセットする Session("StaffID") = staffid Session("StaffName") = staffname Session("AdminFlag") = adminflag End Sub Private Function CheckUserPassword(ByVal userid As String, ByVal password As String) As Boolean Dim ret As Boolean Dim strSQL As String strSQL = "SELECT staffID, staff_name, admin_flag , permission FROM tbl_staff " & _ "WHERE userID = '" & userid.Replace("'", "''") & _ "' AND password = '" & password.Replace("'", "''") & "'" '接続文字列を取得する Dim cnStr As String = System.Configuration.ConfigurationManager.ConnectionStrings("hogehogeConnectionString").ConnectionString() 'コネクションを定義する Using connection As New SqlConnection(cnStr) 'コマンドを定義する Dim command As New SqlCommand(strSQL, connection) 'コネクションを開く connection.Open() Try 'コマンドからデータリーダーを定義する Dim dr As SqlDataReader = command.ExecuteReader 'データリーダーから結果を読み込む If dr.Read Then '対象データが存在する場合 '正しいユーザーIDとパスワードが指定されたので、 'データリーダーから読み出したデータをメンバ変数にセットする staffid = dr("staffID") staffname = dr("staff_name") adminflag = dr("admin_flag") permission = dr("permission") ret = True Else '対象データが存在しない場合 '不正なユーザーIDまたはパスワードが指定された ret = False End If Catch ex As Exception '例外処理(SQLエラーなど) ret = False End Try 'コネクションを閉じる connection.Close() End Using '結果を返して終了する Return ret End Function ************************************************************** ログイン後に行くページでの設定 ************************************************************** Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) '[ユーザーID]ボックスにフォーカスをセットする If Session("StaffID") Is Nothing Then Response.Redirect("~/top.aspx") ElseIf Not Session("AdminFlag") = True Then Response.Redirect("~/top_normal.aspx") End If End Sub

専門家に質問してみよう