- PR -

Windows Vistaのレジストリ編集について

投稿者投稿内容
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-04-13 18:48
とっちゃんです。

KEY_READ でエラーが出るのは別の理由です。
多分、エラーコードが異なっているとはずです。
#私の使っている Vista(Ultimate 32bit版) には、3つのうち1つのキー(UsbFlags キーだったとおもう)が見当たりませんでしたから。

WRITE_DAC ですが、レジストリキーの引数として指定できるリストには出ていないようです(MSDNより)。
かき込み(何の情報かはわかりませんけどw)が必要なのであれば、KEY_WRITE だと思います。
#レジストリ操作のセキュリティ指定は、ファイル操作などとは微妙に異なるアクセス権を指定します。
ただし、面倒だという理由で、KEY_ALL_ACCESS(FullControlを意味します)をつけると、あちこちでアクセス権エラー出ますので、注意してくださいw

いずれにしても、当時とは異なるOSですし、メジャーバージョンも上がってますので、だいぶ違ってると思って置く必要はあると思います。
_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-14 00:36
ちゃっぴ@ACL オタク です。

対象の reistry を覗いてみましたが、所有者が BUILT IN\Administrators になっているので、書き込みはともかく ACL の編集ができないのはおかしな話です。
# てゆうか、ACL は当然いじるべきではないわけですが。。。

当然この application は BUILT IN\Administrators に所属している account で実行しょうから、やはり疑うべきは UAC になるでしょうね。

UAC が有効な状況だと昇格させない場合、CreateRestrictedToken を使って制限された access token で実行されます。

この作業ですが、access token の BUILT IN\Administrators に対し deny-only の flag が設定されるため、BUILT IN\Administrators の設定されている ACE は無効になります。

という感じで例外発生しているのじゃないかな?

なお、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB こちらに関しては、そもそも NT AUTHORITY\SYSTEM しか書き込めませんから、installer とか Windows service 使って書き換えてやるべきだと思います。
_________________
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-15 17:50
ちなみに WRITE_DAC は DACL (Descretionary Access Control List) への書き込みを行うということですね。

Standard Access Rights

DACL を編集することが必要ないのであれば、この flag はつける必要は無いでしょう。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-04-16 14:40
引用:

ちゃっぴさんの書き込み (2007-04-15 17:50) より:
ちなみに WRITE_DAC は DACL (Descretionary Access Control List) への書き込みを行うということですね。

Standard Access Rights

DACL を編集することが必要ないのであれば、この flag はつける必要は無いでしょう。


DACL の編集って、レジストリでも出来るんですかね?
#ここが疑問に思ったことなんですが、できなかった気がするんですよねぇ...w

ACL関係はあんまり詳しくないので(こういうの操作するのって、市販ソフトでは不可能なんでw)、本気で調査したことないんですけどねw
#なにせフォルダのアクセス権ですら、弄るのには神経使いますからww

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-16 20:09
引用:

とっちゃんさんの書き込み (2007-04-16 14:40) より:

DACL の編集って、レジストリでも出来るんですかね?
#ここが疑問に思ったことなんですが、できなかった気がするんですよねぇ...w



Registry Key Security and Access Rights

ここにあるように support されていると書かれています。
# Win32 つかって、検証はしていないですけど。。。
# 手動なら blog で報告したように検証済みです。

なお、registry の場合 key に対しては ACL が存在しますけど、
entry に対しては存在しないと思われます。

引用:

ACL関係はあんまり詳しくないので(こういうの操作するのって、市販ソフトでは不可能なんでw)、本気で調査したことないんですけどねw
#なにせフォルダのアクセス権ですら、弄るのには神経使いますからww



というか、一部の例外(企業内で管理者が決めた policy にしたがって変更する script みたいな)を除き、基本的にこの手の操作(ACLの変更)をやっちゃダメでしょう。
_________________
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-04-16 20:47
引用:

ちゃっぴさんの書き込み (2007-04-16 20:09) より:

Registry Key Security and Access Rights

ここにあるように support されていると書かれています。


ふむふむ...ん?WRITE_DAC は...名前違いで同じ値があるのかな?
あとでチェックしてみるべw

引用:

というか、一部の例外(企業内で管理者が決めた policy にしたがって変更する script みたいな)を除き、基本的にこの手の操作(ACLの変更)をやっちゃダメでしょう。



Program Files のような既知のフォルダでやったら、危険極まりないでしょうね。
#たとえ実験であったとしてもw

基本的には、設定したいじゃなくてこのOSではどうなってる?の調査のためにこのあたりは情報収集してるというという感じですね。
なので、なかなか身に付かないんですよねぇ。。。実装による裏付けがないんでw
#とはいえ、ごく一部のバージョンの初期設定がどうみても...な状況で...w
#仕方なしにここに、おくための設定というのを一生懸命勉強したっすw
#もう、5年も前の話ですが...w

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-16 21:22
引用:

とっちゃんさんの書き込み (2007-04-16 20:47) より:

ふむふむ...ん?WRITE_DAC は...名前違いで同じ値があるのかな?
あとでチェックしてみるべw



じゃなくて、

引用:

Registry Key Security and Access Rights より引用
The valid access rights for registry keys include the DELETE, READ_CONTROL, WRITE_DAC, and WRITE_OWNER standard access rights.



というように Standard Access Rights のものが使えます。ということです。

[ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2007-04-16 21:23 ]
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-04-16 22:15
引用:

ちゃっぴさんの書き込み (2007-04-16 21:22) より:

引用:

Registry Key Security and Access Rights より引用
The valid access rights for registry keys include the DELETE, READ_CONTROL, WRITE_DAC, and WRITE_OWNER standard access rights.



というように Standard Access Rights のものが使えます。ということです。



おー。。。読み落としてました...(*^^*)

なるほどね。標準(あれがまたわかりにくいんだw)のやつはサポートしてると...w

自分では、読む=KEY_READ、書く=KEY_READ|KEY_WRITE でしかやらないからなぁw
#極力リードオンリーで徹底してるけどw

ちゃんと勉強しないとだめっすね。
_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで

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