こんにちは、阿久津です。昨日読者から頂戴した電子メールに、「マイコンピュータにユーザー名を表示する」が、Windows 7で使用できないという質問がありました。メールの送り主曰く「内容の書き込み中にエラーが発生」したとのこと。具体的なエラーメッセージがなかったため、実際に試してみると「LocalizedStringを編集できません。値の内容を書き込み中に、エラーが発生しました」というメッセージを確認しました。これは、Windows XPやWindows VistaからWindows 7へ移行し、同様の感覚でカスタマイズした際に陥りやすい問題です(図01)。

図01: 今回のメールで質問されたと思われるエラーダイアログ。データ値を書き換える際にエラーが発生しています

そもそもWindows 7では、一部のレジストリやシステムファイルに対して、Administratorsグループに属するアカウントでも操作できないようにするため、ファイルやキーの所有者を「TrustedInstaller」が持つようになりました。厳密にはWindows Vistaから導入された機能ですが、Windows 7では更に強化されています。そもそも「TrustedInstaller」はユーザーやグループではなく、サービスとして起動し、必要に応じて稼働する仕組み。なお、同サービスは管理ツールからたどって起動する「サービス」には列挙されず、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ TrustedInstallerキーでその存在を確認できます(図02~03)。

図02: 「lusrmgr.msc」コマンドで起動した「ローカルユーザーとグループ」で確認しても「TrustedInstaller」というユーザー(グループ)は存在しません

図03: サービスとして稼働する「TrustedInstaller」。なお、スタートアップの種類はDWORD値「Start」が「3」になっているため「手動」となります

話をレジストリチューニングに戻しましょう。先ほど示した図01のエラーは、"キーの所有者が「TrustedInstaller」になっているために発生"しているに過ぎません。この問題を解決する方法は以前から何度か紹介していますが、キー(もしくはファイルやフォルダ)の所有者の変更を必要とします。以前の記事で紹介した、MicrosoftのWindows Resource Kit Toolsに格納されてる「SubInACL」を使用するか、同じく以前の記事で用いたアクセス許可ダイアログから操作する方法を使用しなければなりません。個人的にはより簡単な方法がないものかと情報収集しておりますので、良い方法を発見したら本連載で紹介いたします。

さて、今回のテーマである「マイコンピュータにユーザー名を表示する」ですが、結論から言えば、Windows 7でも適用可能です。まずはコマンドプロンプトを起動し、使用する環境変数「%USERNAME%」「%COMPUTERNAME%」が登録されているか、「set」コマンドを使って確認してください。各環境変数の値はOSが起動時に設定していますので、通常は必ず表示されます(図04~05)。

図04: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「cmd」と入力して<OK>ボタンをクリックします

図05: コマンドラインに「set | findstr "USERNAME"」と入力して[Enter]キーを押すとユーザー名が表示され、「set | findstr "COMPUTERNAME"」と入力して[Enter]キーを押せばコンピュータ名が表示されます

次はレジストリエディタを起動し、HKEY_CLASSES_ROOT \ CLSID \ {20D04FE0-3AEA-1069-A2D8-08002B30309D}キーのアクセス許可設定を変更しましょう。ダイアログをたどって同キーのセキュリティの詳細設定ダイアログを起動し、<所有者>タブでキーの所有者を「Administrators」グループに変更します。あとはアクセス許可ダイアログで同グループの「フルコントロール」を許可します(図06~10)。

図06: [Win]+[R]キーを押して「ファイル名を指定して実行」を表示し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図07: レジストリエディタが表示したら、HKEY_CLASSES_ROOT \ CLSID \ {20D04FE0-3AEA-1069-A2D8-08002B30309D}までキーをたどって開きます。続いて、{20D04FE0-3AEA-1069-A2D8-08002B30309D}キーを右クリックして、メニューから<アクセス許可>をクリックします

図08: アクセス許可ダイアログが表示したら、<詳細設定>ボタンをクリックします

図09: セキュリティの詳細設定ダイアログが表示したら、<所有者>タブを開き、「所有者の変更」の一覧から<Administrators>を選択して<OK>ボタンをクリックします

図10: 元のアクセス許可ダイアログに戻ったら、<Administrators>を選択した状態で「フルコントロール」の<許可>に並ぶチェックボックスをクリックした後、<OK>ボタンをクリックします

続いて、{20D04FE0-3AEA-1069-A2D8-08002B30309D}キー内にある文字列値「LocalizedString」をダブルクリックで開き、値のデータを「USERNAME% on %COMPUTERNAME%」に書き換えましょう。あとは[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了してください。なお、一連のチューニング手順をまとめると以下のとおりになります(図11~13)。

図11: セキュリティ設定を終えたら、右ペインにある文字列値「LocalizedString」をダブルクリックします

図12: ダイアログが起動したら、テキストボックスの内容を「USERNAME% on %COMPUTERNAME%」に書き換えて<OK>ボタンをクリックします

図13: 設定を言えたら[F5]キーを押して変更内容をシステムに反映させてから、<×>ボタンをクリックしてレジストリエディタを終了します

1.[Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「cmd」と入力してから<OK>ボタンをクリックします。
2.レジストリエディタが起動したら、HKEY_CLASSES_ROOT \ CLSID \ {20D04FE0-3AEA-1069-A2D8-08002B30309D}までキーをたどって開き、同キーを右クリック。メニューから<アクセス許可>をクリックします
3.アクセス許可ダイアログの<詳細設定>ボタンをクリックします。
4.セキュリティの詳細設定ダイアログの<所有者>タブを開き、「所有者の変更」の一覧から<Administrators>を選択して<OK>ボタンをクリックします。
5.アクセス許可ダイアログに戻ったら、<Administrators>を選択した状態で「フルコントロール」の<許可>に並ぶチェックボックスをクリックした後、<OK>ボタンをクリックします。
6.{20D04FE0-3AEA-1069-A2D8-08002B30309D}キーの右ペインにある文字列値「LocalizedString」をダブルクリックします。
7.データ値の内容を「USERNAME% on %COMPUTERNAME%」に書き換えて<OK>ボタンをクリックします。
8.[F5]キーを押して変更内容をシステムに反映させてから、<×>ボタンをクリックしてレジストリエディタを終了します。

これでチューニング操作は完了ですが、Windows 7の初期状態ではデスクトップのアイコンが非表示になっていますので、デスクトップアイコンの設定ダイアログを呼び出し、コンピューターアイコンを表示させてください。図17のようにアイコン名が「{ユーザー名}on{コンピュータ名}」に変化します。ちなみに文字列値「LocalizedString」の初期値は「@%SystemRoot%\system32\shell32.dll,-9216」となりますので、チューニング結果を破棄したいときは同エントリのデータ値を書き戻してください(図14~17)。

図14: デスクトップの何もないところを右クリックし、メニューから<個人設定>をクリックします

図15: 「個人設定」が開いたら、ナビゲーションウィンドウにある<デスクトップアイコンの変更>をクリックします

図16: ダイアログが起動したら、<コンピューター>をクリックしてチェックを入れてから<OK>ボタンをクリックします

図17: するとデスクトップにコンピューターアイコンが現われますが、アイコン名が「{ユーザー名}on{コンピュータ名}」となります

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)