- - PR -
GetProcessesByNameの実行時の権限について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-22 19:54
こんばんは
あるバッチプログラムがあります。 これを他のバッチプログラムから実行したり、 Webアプリから実行したりします。 GetProcessesByNameを利用して、 同じプロセスが実行されていないかの 確認を行い、実行されていなければ起動を行わないという 処理を行っています。 ここで1点問題が発生しました。 WebアプリはNETWORK SERVICEユーザですが、 PowerUserから実行されたバッチを WebアプリからGetProcessesByNameにて 実行確認を行うと 例外が発生しました。(アクセスが拒否されました。) というエラーが出てしまいます。 NETWORK USERでGetProcessesByNameを利用することは出来ないのでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2007-03-22 21:26
出来ますが、好ましくありません。 Web アプリケーションを別途作成した、適当な権限を持つユーザアカウントで実行するように調整するのが一般的な解です。 | ||||
|
投稿日時: 2007-03-22 22:29
ありがとうございました。 IISのアプリケーションプールのプロパティで変更が出来そうですね。 検討いたします。 | ||||
|
投稿日時: 2007-03-22 22:48
web.config で設定する方が一般的と思います。 | ||||
|
投稿日時: 2007-03-22 23:28
COM+ Server Application のようなものを利用して、常に同じ account で実行されるように構成するのも一考ですね。
あ、service もありかな? _________________ | ||||
|
投稿日時: 2007-03-23 15:46
ありがとうございました。 <identity impersonate="true" userName="fooid" password="foopass" > という設定をWeb.configに設定するとfooidユーザで実行されているようです。 ところがshellで実行しているexeが実行されなくなってしまいました。 ユーザを「administrator」に変えても結果は同じでした。 この記述を消すと元通りに実行されるようになります。 どのあたりに原因があるでしょうか? | ||||
|
投稿日時: 2007-03-23 16:17
自己レスです。 calc.exeに変えると起動されていたので exeが実行されないというのは誤りです。 但し、実行ユーザはNETWORK SERVICEでした。 また、ログ出力を行っているのですが出ていないので ログ出力がされていないのと、処理が途中で終わってしまっているのでしょう。 もう少し調べてみます。 | ||||
|
投稿日時: 2007-03-26 11:06
いろいろ試してみましたが、
1.web.configに実行ユーザ設定を行うとexeのshell実行がうまくいかない 2.machine.configに実行ユーザ設定を行ってもexeのshell実行は NETWORK SERVICEになってしまう。 3.サービスの起動設定で行うとサービスが起動できない (どこかのディレクトリ権限の問題?) アプリケーションプールの設定変更で行うと今のところうまくいっています。 あまり時間もかけられないので、上記の形で進めようかと思っています。 もしも問題があるのであればご指摘いただければ幸いです。 |