- PR -

アクセス権について

1
投稿者投稿内容
新人
会議室デビュー日: 2006/07/21
投稿数: 12
投稿日時: 2006-09-05 09:56
現在、VS2005(vb.net)で開発を行っているのですが、お聞きしたい事があります。
以前の過去ログを参照しても同じようなものがあったのですが、
解決していないようだったので質問させて頂きます。

現在イベント処理時にログを出力したり、ファイルを別サーバにアップロードする為、
Web.configでユーザの偽装を行って処理しております。

別の処理でWebサーバ内にあるEXEを起動するものがあるのですが、起動はするのですが
レジストリを読みにいく箇所で以下のエラーとなります。
(EXEはVB6で作成したものです)

「-2147221168オートメーション エラーです。レジストリのキーを読み取れませんでした」

・Web.configでのユーザ偽装を削除すると正常に動作します。

偽装ユーザを「administrators」グループにしたり、レジストリの全てのキーに
アクセス許可を与えますが上記エラーとなり実行できませんでした。

関係ないですが、Diagnosticsを使用してEXE起動しているのですが、
UserName・Passwordを設定してStartを実行しても
「アプリケーションを正しく初期化できませんでした」のエラーとなり
実行できませんでした。

明らかにユーザのアクセス権の問題だと思われるのですが、
対応方法を知っておられる方がおられましたら教えて頂けないでしょうか。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-05 20:56
 なぜかは調べていないけど、出来ないんだよね。。。

 で、局所的に偽装すると、いけるんだな、これが。→ http://blogs.wankuma.com/jitta/articles/30483.aspx
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-09-05 21:14
引用:

明らかにユーザのアクセス権の問題だと思われるのですが、



たぶん違います。
アクセス権の問題ではなく、仕組み上の問題だと思います。

最近別スレッドでも書きましたが、Windows サービスはユーザプロファイルを読み込まない状態で起動されます。

IIS の基本機能にユーザプロファイルは不要ですから、IIS 自体積極的にユーザプロファイルを読み込むような造りにはなっていないのでしょう。

そしておそらく、Web.config による偽装を行っても、ASP.NET ランタイムはユーザプロファイルを読み込まれないんでしょう。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-09-06 01:05
引用:

渋木宏明(ひどり)さんの書き込み (2006-09-05 21:14) より:

最近別スレッドでも書きましたが、Windows サービスはユーザプロファイルを読み込まない状態で起動されます。

IIS の基本機能にユーザプロファイルは不要ですから、IIS 自体積極的にユーザプロファイルを読み込むような造りにはなっていないのでしょう。



[追加]User profile の問題ということに間違いは無いでしょう。[/追加]

ここに結構詳しい解説があります。

セキュリティ保護された ASP.NET アプリケーションの構築 : 認証、認定、および通信のセキュリティ保護

[追加]
ということで、Web.config で偽装を行った場合、LOGON32_LOGON_NETWORK で logon されるため profile が読み込まれないというのが真相のようです。
[/追加]

[若干編集]
ただ、Windows Service 自体は user profile を読み込んで実行しています。
もっとも、Windows Service を起動する規定の account 'Local System' は user profile 自体が存在しないので例外になるでしょうがね。
[/若干編集]

[ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-09-06 03:02 ]
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-09-06 02:52
引用:

Jittaさんの書き込み (2006-09-05 20:56) より:

で、局所的に偽装すると、いけるんだな、これが。→



その source だと LOGON32_LOGON_INTERACTIVE で logon していますね。
この方法だと profile が読み込まれると思います。

LogonUser

ちなみにちょっと調べてみるとこんな情報も見つけました。

セキュリティ保護された ASP.NET アプリケーションの構築 : 認証、認定、および通信のセキュリティ保護

XP 以降だと SeTcbPrivilege なくてもいけちゃうのね。

[追加]
LogonUser (English)

[ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-09-06 02:57 ]
新人
会議室デビュー日: 2006/07/21
投稿数: 12
投稿日時: 2006-09-06 08:59
皆様本当にありがとうございました。
大変参考になりました。

なるほど、profileですか・・・

仕様から再度検討します。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-09-06 09:04
引用:

[若干編集]
ただ、Windows Service 自体は user profile を読み込んで実行しています。
[/若干編集]



必ず読み込まれるわけじゃないですよね?

「デスクトップとの対話を許可」してるなら読み込んでもよさそうですが、そうでない場合は読み込んでくれなかったような。。。

# それとも、ユーザプロファイルとハイブは分けて考えないといけないとか?
1

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