Windowsレジストリにいくつかの値を書き込むためにDelphi XE2 Projectを使用しています。Delphi 環境で RegEdit を実行しようとしています。私は次のコードを試しました:
procedure TMainForm.BitBtn01Click(Sender: TObject);
begin
ShellExecute(handle,'','C:\WINDOWS\regedit.exe',
'[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000001}\Subnode 01]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\
00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\
41,00,70,00,70,00,6c,00,69,00,63,00,61,00,74,00,69,00,6f,00,6e,00,20,00,57,\
00,69,00,7a,00,61,00,72,00,64,00,20,00,30,00,31,00,2e,00,64,00,6c,00,6c,00,\
00,00'
,nil,SW_SHOW);
end;
しかし、それはコンパイルされていません。私の要件は、サブノード 01 の展開可能な文字列値を「%SystemRoot%\System32\Application Wizard 01.dll」として書き込むことです。プロジェクトのアクティブなプラットフォームは 32 ビットですが、64 ビットも追加されており、アプリケーションは両方のプラットフォームで管理者として実行されます。
Wow64DisableWow64FsRedirection FunctionとWow64EnableWow64FsRedirection Functionを呼び出すことで問題を解決できると思います。しかし、いつそれを呼び出すかは明確ではありません。これが私のプロジェクトの別の詳細です。