C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: exe起動について


(過去ログ 12 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■3200 / inTopicNo.1)  exe起動について
  
□投稿者/ ゆっきー (39回)-(2007/04/25(Wed) 17:39:52)

分類:[VB.NET (ASP.NET)] 


環境[Windows Server 2003]

Serverに設置したASP.NET(画面)からABC.exeを起動すると、exe自体は起動し動いているのですが、
タスクマネージャで見た結果、メモリだけが常に増え続ける一方で終了もしません。
起動はさせるけど、何もしない感じでABC.exe自体の機能は何も動いていない状態です。

アカウントを偽装する前には正常にABC.exeを起動し、処理が終了したらABC.exeも終了しました。
アカウントの偽装(Webconfigに追加)した場合、上記のようになってしまいました。

アカウントの偽装に原因があるかと思い、
下記(http://bbs.wankuma.com/index.cgi?mode=al2&namber=3181)で質問させていただいたのですが
アカウントの偽装は問題ないようだったので、
新しいスレを立てさせていただきました。

何かお分かりになられたらお願いいたします。


引用返信 編集キー/
■3201 / inTopicNo.2)  Re[1]: exe起動について
□投稿者/ επιστημη (499回)-(2007/04/25(Wed) 17:45:17)
επιστημη さんの Web サイト
> 何かお分かりになられたらお願いいたします。

何をお尋ねなのかわかりません。
# 質問の体裁を成していないのにお気づきですか?

引用返信 編集キー/
■3202 / inTopicNo.3)  Re[2]: exe起動について
□投稿者/ HiJun (26回)-(2007/04/25(Wed) 18:01:48)
何を聞きたいのかが見えません。

もしかして、ABC.exeが動かない理由でしょうか?
もしそうならば、ABC.exeにログかなんか吐き出させるようにして
どのステップまで行っているのか確認してみてはいかがですか。

引用返信 編集キー/
■3203 / inTopicNo.4)  Re[3]: exe起動について
□投稿者/ 囚人 (91回)-(2007/04/25(Wed) 18:03:34)
掲示板のやりとりをどうしようがゆっきーさんの自由ですが、前スレッドの

>それは違う原因で、ワーカープロセスの実行アカウントを変更していませんか?
>例えばこんな感じで
>http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000009.aspx

を無視されて新しい質問をされると、例えば私のような器の小さな人間は、今回の問題が分かったとしても、もう答えないたりしないわけです。

何か得をしようと思ったならば、それなりの事をしないとせっかく機会を損失しますよ。
引用返信 編集キー/
■3204 / inTopicNo.5)  Re[4]: exe起動について
□投稿者/ ゆっきー (41回)-(2007/04/25(Wed) 18:16:30)
No3201 (επιστημη さん) に返信
>>何かお分かりになられたらお願いいたします。
>
> 何をお尋ねなのかわかりません。
> # 質問の体裁を成していないのにお気づきですか?

詳細に書かせていただきます。

testServerのEXEフォルダにABC.EXEが存在します。(C:\EXE\ABC.EXE)
testServerにあるtest画面(ASP.NETの画面)のボタンをクリックすると
ABC.EXEが実行されます。
(ABC.EXEはA_DBからB_DBにデータを移動します。)
(ABC.EXEはコマンドプロンプトで蹴ると正常に動作します。)
ABC.EXEの処理結果がtest画面に表示(Labelで終了しました的なメッセージ)されます。
一定時間待ってABC.EXEの処理の結果が返ってこない場合、
test画面にTimeout的なメッセージを表示(Labelで)します。

ABC.EXEは「XYZ」というユーザで実行したいので、
ABC.EXEを実行するユーザを「XYZ」ユーザで実行するために
http://bbs.wankuma.com/index.cgi?mode=al2&namber=3181で質問していた
「偽装」を使ってABC.EXEを実行するユーザを「XYZ」ユーザにしました。

上記をtest1Server(WindowsServer2003)で実行するとTimeout的なメッセージが表示されるので
タスクマネージャで確認したところABC.EXEは実行されているようですが、
ABC.EXEの処理が終了していなかったです。

しかし同じ状態でtest2Server(WindowsXp)で実行すると終了しました的なメッセージが表示され、
ABC.EXEの処理も正しく動作し、タスクマネージャからも消えます。

ということで
「なぜ同じ状態なのにWindowsXpだと動くのにWindowsServer2003の動かないのか。」
ということが聞きたいのです。
よろしくお願いします。
引用返信 編集キー/
■3206 / inTopicNo.6)  Re[3]: exe起動について
□投稿者/ ゆっきー (43回)-(2007/04/25(Wed) 18:22:58)
No3202 (HiJun さん) に返信
> もしかして、ABC.exeが動かない理由でしょうか?
そうです。
タスクマネージャで確認してみると
ABC.EXEの処理は実行されているようですが
終了する気配もなく、メモリ使用量が増え続けるだけなのです。

> もしそうならば、ABC.exeにログかなんか吐き出させるようにして
> どのステップまで行っているのか確認してみてはいかがですか。
ただ単にABC.EXEが動かないわけではないです。
ABC.EXEは正常に動作します。デバッグしながらも確認してますし、
コマンドプロンプロでABC.EXEを実行しても正常に動作します。

ASP.NETの画面から偽装を使ってABC.EXEを実行しているので、
その偽装が問題かと思ったのですが、そちらは問題なさそうです。

よろしくお願いします。

引用返信 編集キー/
■3209 / inTopicNo.7)  Re[4]: exe起動について
□投稿者/ 囚人 (92回)-(2007/04/25(Wed) 19:46:29)
そもそも私には偽装に関して深い知識があるわけではないのを断っておきます。

まず、「XP ではいける〜〜」の話は Visual Studio 22005 の開発サーバーで Web アプリケーションを実行しているからですよね?その場合、ホストプロセス(Webアプリケーションを実行しているプロセス)は今開発をしているユーザーのアカウントで実行されます。つまり、開発者が管理者権限を持っていると、フルアクセスで実行されるわけです。

で、実際の本番環境は IIS で実行されるので、本番環境に移行した途端、こういった権限関連の問題が表面化するわけです。

なので、開発サーバがあるからといって安易にそれを使用するのではなく、開発マシンにも IIS をインストールし、開発中も IIS で実行する事をお薦めします。

で、問題の件ですが、ABC.EXE が行っている「何か」に対して、偽装しているユーザがその権限をもっているかどうかを確認してください。
(例えば ABC.EXE が Windows フォルダを参照しているならば、偽装しているユーザが Windows フォルダをアクセスする権利があるかどうか)

後は、これ
http://support.microsoft.com/kb/325791/ja

#別に怒っているわけではありませんので。

引用返信 編集キー/
■3210 / inTopicNo.8)  Re[5]: exe起動について
□投稿者/ 囚人 (93回)-(2007/04/25(Wed) 19:50:19)
「開発サーバ」ではなく「開発Webサーバ」でした
引用返信 編集キー/
■3211 / inTopicNo.9)  Re[5]: exe起動について
□投稿者/ HiJun (27回)-(2007/04/25(Wed) 20:00:24)
あとは、ASPNETユーザにDB操作できるような権限を与えてやるかですね。

※外部にでるようなWEBであれば、危険ではありますけど。
引用返信 編集キー/
■3213 / inTopicNo.10)  Re[6]: exe起動について
□投稿者/ ちゃっぴ (17回)-(2007/04/25(Wed) 21:28:31)
ちゃっぴ さんの Web サイト
No3210 (囚人 さん) に返信
>
で、問題の件ですが、ABC.EXE が行っている「何か」に対して、偽装しているユーザがその権限をもっているかどうかを確認してください。

ABC.EXE の起動方法にもよりますが、普通に起動した場合には primary token が引き継がれるため、偽装前の account で実行されることになるでしょう。
引用返信 編集キー/
■3217 / inTopicNo.11)  Re[7]: exe起動について
□投稿者/ 囚人 (95回)-(2007/04/25(Wed) 22:54:49)
>ABC.EXE の起動方法にもよりますが、普通に起動した場合には primary token が引き継がれるため、偽装前の account で実行されることになるでしょう。

なるほど。では ASP.NET のワーカープロセスのアカウント自体の権限がそれなりにないとだめという事なんですね。

引用返信 編集キー/
■3220 / inTopicNo.12)  Re[5]: exe起動について
□投稿者/ ゆっきー (44回)-(2007/04/26(Thu) 11:31:24)
No3209 (囚人 さん) に返信

返信ありがとうございます。

> で、実際の本番環境は IIS で実行されるので、本番環境に移行した途端、こういった権限関連の問題が表面化するわけです。
>
> なので、開発サーバがあるからといって安易にそれを使用するのではなく、開発マシンにも IIS をインストールし、開発中も IIS で実行する事をお薦めします。

XPのサーバの方もIISを使用し実行しています。

> で、問題の件ですが、ABC.EXE が行っている「何か」に対して、偽装しているユーザがその権限をもっているかどうかを確認してください。
> (例えば ABC.EXE が Windows フォルダを参照しているならば、偽装しているユーザが Windows フォルダをアクセスする権利があるかどうか)

ABC.EXEが行っている処理はA_DBからB_DBへデータを移動します。
A_DBもB_DBもXMLファイルから接続する接続文字列に関する情報を取得しています。
XMLファイルにも偽装しているユーザのアクセス権限を与えています。
(ABC.EXE自体にも偽装しているユーザのアクセス権限を与えています。)

> 後は、これ
> http://support.microsoft.com/kb/325791/ja

確認してみます。ありがとうございます。
引用返信 編集キー/
■3221 / inTopicNo.13)  Re[6]: exe起動について
□投稿者/ ゆっきー (45回)-(2007/04/26(Thu) 11:38:01)
No3211 (HiJun さん) に返信

返信ありがとうございます。

> あとは、ASPNETユーザにDB操作できるような権限を与えてやるかですね。

DBへのアクセスは、データソース名、ユーザID、パスワード、スキーマ名を
XMLファイルから取得し、ABC.EXE内で接続文字列を作成してアクセスしているので
ASP.NETの画面を動かしてるユーザは関係ないと思います。
(間違っていたらすいません。)

そのXMLファイルに偽装しているユーザのアクセス権限を与えています。

よろしくお願いします。
引用返信 編集キー/
■3222 / inTopicNo.14)  Re[7]: exe起動について
□投稿者/ ゆっきー (46回)-(2007/04/26(Thu) 12:00:40)
No3213 (ちゃっぴ さん) に返信

返信ありがとうございます。

> ■No3210 (囚人 さん) に返信
>>
> で、問題の件ですが、ABC.EXE が行っている「何か」に対して、偽装しているユーザがその権限をもっているかどうかを確認してください。
>
> ABC.EXE の起動方法にもよりますが、普通に起動した場合には primary token が引き継がれるため、偽装前の account で実行されることになるでしょう。

ABC.EXEは
System.Diagnostics.Process.Start(ファイル名, パラメータ)
を使用しています。
この方法でも偽装前のアカウントで実行されるのでしょうか。

よろしくお願いします。
引用返信 編集キー/
■3224 / inTopicNo.15)  Re[8]: exe起動について
□投稿者/ ちゃっぴ (18回)-(2007/04/26(Thu) 12:41:28)
ちゃっぴ さんの Web サイト
> ABC.EXEは
> System.Diagnostics.Process.Start(ファイル名, パラメータ)
> を使用しています。
> この方法でも偽装前のアカウントで実行されるのでしょうか。

引数が二つのほうだと普通に CreateProcess call していると思うので、偽装前の token が使用されるでしょうね。

Process.Start メソッド (String, String, SecureString, String)
http://msdn2.microsoft.com/ja-jp/library/sxf2saat(VS.80).aspx

上記を使えばたぶん CreateProcessWithLogonW を使っているはずなので、指定した account で起動させることができるでしょう。

ただし、その password をどのように安全に保持するかが問題です。

引用返信 編集キー/
■3236 / inTopicNo.16)  Re[9]: exe起動について
□投稿者/ ゆっきー (47回)-(2007/04/26(Thu) 18:27:14)
No3224 (ちゃっぴ さん) に返信

返信ありがとうございます。

>
> 引数が二つのほうだと普通に CreateProcess call していると思うので、偽装前の token が使用されるでしょうね。
>
> Process.Start メソッド (String, String, SecureString, String)
> http://msdn2.microsoft.com/ja-jp/library/sxf2saat(VS.80).aspx
>
> 上記を使えばたぶん CreateProcessWithLogonW を使っているはずなので、指定した account で起動させることができるでしょう。
>
> ただし、その password をどのように安全に保持するかが問題です。

返信遅くなりましてすみませんです。。。

上記の方法ではなく、といいますか…
アカウントの偽装自体をを使わずに正常に起動することができました。

アクティブディレクトリを設定するだけでexe起動が出来るみたいでした。


ちゃっぴ さんを含め、さまざまな方にいろいろ教わったことをありがたく思います。
ありがとうございました。




解決済み
引用返信 編集キー/
■3243 / inTopicNo.17)  Re[10]: exe起動について
□投稿者/ 渋木宏明(ひどり) (194回)-(2007/04/27(Fri) 07:56:37)
渋木宏明(ひどり) さんの Web サイト
> アクティブディレクトリを設定するだけでexe起動が出来るみたいでした。

大丈夫かなぁ。

セキュリティ設定をずるずるに緩めちゃったりしてないことをお祈りしています。

引用返信 編集キー/
■3244 / inTopicNo.18)  Re[11]: exe起動について
□投稿者/ ゆっきー (49回)-(2007/04/27(Fri) 10:11:27)
2007/04/27(Fri) 10:25:16 編集(投稿者)

No3243 (渋木宏明(ひどり) さん) に返信

返信ありがとうございます。

> 大丈夫かなぁ。
>
> セキュリティ設定をずるずるに緩めちゃったりしてないことをお祈りしています。

セキュリティの確認はきちんとします。

1つ聞きたいのですが、
アカウントの偽装を施していた際に作ったアカウント「XYZ」を端末、Webconfigから削除し、実行しようとするとエラーになってしまいます。
デバックなしで実行した結果、サーバー アプリケーションは使用できません。とのエラーが表示されてしまいます。

また、偽装用アカウント「XYZ」は消さず、Webconfigのほうだけ消して動かすと
aspnet_wp.exeは「XYZ」のアカウントで動いています。

何かお分かりでしたら、ご教授ください。
よろしくお願いいたします。
引用返信 編集キー/
■3252 / inTopicNo.19)  Re[6]: exe起動について
□投稿者/ ゆっきー (50回)-(2007/04/27(Fri) 16:43:47)
自己解決しました。

Machine.ConfigにもWebConfig同様に、アカウント指定を記述していたためでした。

Machine.Configを書き直したところ、正常に機能させることができました。

すみませんでした。。。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -