- PR -

GetProcessesByNameの実行時の権限について

投稿者投稿内容
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-03-22 19:54
こんばんは

あるバッチプログラムがあります。
これを他のバッチプログラムから実行したり、
Webアプリから実行したりします。

GetProcessesByNameを利用して、
同じプロセスが実行されていないかの
確認を行い、実行されていなければ起動を行わないという
処理を行っています。

ここで1点問題が発生しました。
WebアプリはNETWORK SERVICEユーザですが、
PowerUserから実行されたバッチを
WebアプリからGetProcessesByNameにて
実行確認を行うと
例外が発生しました。(アクセスが拒否されました。)
というエラーが出てしまいます。

NETWORK USERでGetProcessesByNameを利用することは出来ないのでしょうか?

よろしくお願いします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-03-22 21:26
引用:

NETWORK USERでGetProcessesByNameを利用することは出来ないのでしょうか?



出来ますが、好ましくありません。

Web アプリケーションを別途作成した、適当な権限を持つユーザアカウントで実行するように調整するのが一般的な解です。
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-03-22 22:29
引用:

Web アプリケーションを別途作成した、適当な権限を持つユーザアカウントで実行するように調整するのが一般的な解です。



ありがとうございました。
IISのアプリケーションプールのプロパティで変更が出来そうですね。
検討いたします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-03-22 22:48
引用:

IISのアプリケーションプールのプロパティで変更が出来そうですね。



web.config で設定する方が一般的と思います。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-03-22 23:28
COM+ Server Application のようなものを利用して、常に同じ account で実行されるように構成するのも一考ですね。

あ、service もありかな?
_________________
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-03-23 15:46
引用:

web.config で設定する方が一般的と思います。



ありがとうございました。

<identity impersonate="true" userName="fooid" password="foopass" >
という設定をWeb.configに設定するとfooidユーザで実行されているようです。

ところがshellで実行しているexeが実行されなくなってしまいました。

ユーザを「administrator」に変えても結果は同じでした。
この記述を消すと元通りに実行されるようになります。

どのあたりに原因があるでしょうか?
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-03-23 16:17
引用:

<identity impersonate="true" userName="fooid" password="foopass" >
という設定をWeb.configに設定するとfooidユーザで実行されているようです。

ところがshellで実行しているexeが実行されなくなってしまいました。



自己レスです。
calc.exeに変えると起動されていたので
exeが実行されないというのは誤りです。

但し、実行ユーザはNETWORK SERVICEでした。

また、ログ出力を行っているのですが出ていないので
ログ出力がされていないのと、処理が途中で終わってしまっているのでしょう。

もう少し調べてみます。


takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-03-26 11:06
いろいろ試してみましたが、
1.web.configに実行ユーザ設定を行うとexeのshell実行がうまくいかない
2.machine.configに実行ユーザ設定を行ってもexeのshell実行は
 NETWORK SERVICEになってしまう。
3.サービスの起動設定で行うとサービスが起動できない
 (どこかのディレクトリ権限の問題?)

アプリケーションプールの設定変更で行うと今のところうまくいっています。

あまり時間もかけられないので、上記の形で進めようかと思っています。

もしも問題があるのであればご指摘いただければ幸いです。

スキルアップ/キャリアアップ(JOB@IT)