【 レジストリ変更の適用 】

1. 対象レジストリ
2. SendMessageTimeout 関数の使用

  • お気に入り
  • HKCU\Software\Microsoft\Windows\CurrentVersion\POLICIES\Explorer
  • NoFavoritesMenu=0

  • お気に入り
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
  • StartMenuFavorites=1

  • 最近使ったファイル
  • HKCU\Software\Microsoft\Windows\CurrentVersion\POLICIES\Explorer
  • NoRecentDocsMenu=0

  • クラシックメニューのコントロールパネルとプリンタ
  • HKCU\Software\Microsoft\Windows\CurrentVersion\POLICIES\Explorer
  • NoSetFolders=0

  • 検索
  • HKCU\Software\Microsoft\Windows\CurrentVersion\POLICIES\Explorer
  • NoFind=0

  • HELP
  • HKCU\Software\Microsoft\Windows\CurrentVersion\POLICIES\Explorer
  • NoSMHelp=0

  • ファイル名を指定して実行
  • HKCU\Software\Microsoft\Windows\CurrentVersion\POLICIES\Explorer
  • NoRun=0

  • クラシックメニューのログオフ
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
  • StartMenuLogoff=1

  • Windowsの終了
  • HKCU\Software\Microsoft\Windows\CurrentVersion\POLICIES\Explorer
  • NoClose=0

  • 管理ツールメニュー
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
  • StartMenuAdminTools=YES

  • 設定変更の通知
  • 4つめの引数に "Policy" を指定します

  •  
    DWORD dwResult;
    LPTSTR lpData = "Policy";
     
    SendMessageTimeout(
    	HWND_BROADCAST,
    	WM_SETTINGCHANGE,
    	NULL,
    	(LPARAM)lpData,
    	SMTO_NORMAL,
    	1000,
    	&dwResult
    );
    


  • この関数の有名な使い道は、Windows の通常使うプリンタの設定です。以下のリンクにその
    詳細があります

  • Microsoft 文書 246772

  • また、それとは別に "Policy" に関する記述は以下にあります

  • US Microsoft MSDN

  • lParam の説明は以下のようになります

  • システムが SystemParametersInfo関数呼び出しの結果、このメッセージを送る場合は lParam
    変更されたシステム・パラメーターを含んでいるエリアを示す文字列へのポインターです。

  • 例えば、この文字列は登録キーの名前あるいは Win.iniファイル中のセクションの名前です。

  • このパラメーターは、どのシステム・パラメーターが変わったか断定することにおいては、特に有用
    ではありません。それは、文字列がレジストリの名前である場合、全体のパスではなく登録されてい
    る末端だけを示します。さらに、NULLがセットされる事もあります。

  • 一般に、このメッセージを受け取る場合、アプリケーションによって使用されるすべてのシステム・パ
    ラメーター・設定をチェックして再びロードするべきです。

  • システムが、policy設定の変更の結果このメッセージを送る場合、このパラメーターは文字列として
    "Policy" を指します。また、システムが、local設定の変更の結果このメッセージを送る場合、この
    パラメーターは文字列としての "intl" を指します。




  • 要するに
  • ここで示されている情報だけでは、仕様と呼べるものでは無く不完全なもの
    です。これは「約束事」のようなものでその背景も明確ではありませんが、
    とりあえずヒントにはなるでしょう。

  • そこで、Windows XP でテストした結果有効であったレジストリエントリが
    対象レジストリとなっています

  • これらは皆スタートメニューの中にあるものです。逆に言えばデスクトップ
    のアイコンを隠す設定に対しては有効ではありませんでした