Programming Field - プログラミング Tips

「セキュリティ」タブと WinXP Home Edition

Windows XP Home Edition では、Professional Edition や Windows 2000 などにある、フォルダやドライブのプロパティにおける「セキュリティ」タブが存在せず、GUI 上でファイルごとに権限を設定する方法が(Windows が用意する機能としては)ありません。これは仕様なのですが、セーフモードではなぜか表示され設定できるようになります。ということは、「セキュリティ」タブを表示させるコード/DLLがどこかに存在するということです。

そこで、HKEY_CLASSES_ROOT¥Directory¥shellex¥PropertySheetHandlers をチェックしてみると、「{1F2E5C40-9550-11CE-99D2-00AA006E086C}」が存在しているはずです。これは HKEY_CLASSES_ROOT¥CLSID をチェックしてみると「rshx32.dll」が登録しているクラスであることが分かります。

では rshx32.dll の中身をのぞいてみると、

が関与していそうなのが分かります。特に後者はポリシー設定で特別な場合を除き設定を行う場所ではないので、前者を当たってみます。そこで、HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control¥SafeBoot¥Option をたどり(無かったらキーを作成)、OptionValue の値を DWORD 値で「1」に設定します。すると、フォルダを右クリックすると「セキュリティ」タブが表示されるようになります。

ところがこの状態で Windows を再起動すると、まるでセーフモードになったかのように、一部の機能が使用できなくなって管理者ユーザーでしかログインできなくなってしまいます。どうやら、上記の値は rshx32.dll 以外の DLL もチェックしているように思われます。

なので、実際に普通の状態で「セキュリティ」タブを使うには、通常起動してからレジストリを書き換え、終了前に元に戻す作業を毎回行うか、rshx32.dll をうまく書き換えて値のチェックを通るようにする方法をとる必要があります。

以下参考 URL です。2点目は英語ですが rshx32.dll の書き換え方法が記述されていたりします。

最終更新日: 2008/07/16