レジストリで DEVMGR_SHOW_NONPRESENT_DEVICES をいじる事がある場合、値の型を DWORD (REG_DWORD) ではなく 文字列 (REG_SZ) でやらないと、環境変数に変な値が展開されてしまい Delphi の environment.proj が壊れた状態になってしまう事があります。
…ぶっちゃけ、「”Windows 高速化” を何かやりませんでしたか?」 という話です。
環境変数の格納されているレジストリ ([HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]) のエントリは、REG_SZ または REG_EXPAND_SZ 型でなくてはなりません。
1.レジストリエディタ (regedit.exe) を起動し、[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] に DWORD の値がないかチェックする。
2.DWORD の値 (REG_DWORD) があれば、その値を10進文字列化したものを文字列 (REG_SZ) で登録しなおす 。不要なら削除する。
3.不正な DWORD の値は "システムの環境変数" から見えない事があるので注意。
"システムの環境変数" は [ファイル名を指定して実行] から、"control sysdm.cpl" を実行し、[詳細設定] タブにある [環境変数] ボタンで確認できる。
4.念のためにログオフして再ログインする。
5.環境変数が修正されても、*.proj に転記された不正な文字は消えないので、Delphi を起動し [ツール | オプション] で "環境オプション – 環境変数" を辿り、該当する環境変数があればダブルクリックして、不正な文字を正しい文字列に修正するか半角 SPで置換する。
値を削除する事はできないようです。
この手順で直るようです。環境変数を格納しているレジストリに DWORD 値が含まれていると、Delphi だけではなく他のアプリケーションにも悪影響を与える事があるようなので、この現象が発生したらレジストリをキチンと整備しなければならないようです。
See Also:
[Delphi サポートって]
http://www.freeml.com/delphi-users/2257/latest
[Delphi XE Starterで何もないフォームをコンパイルするとエラーが出る]
http://www.freeml.com/delphi-users/1834/latest
|