2012-02-29 6 views
1

HKLMでキーを作成しようとしていますが、HKLM \ SOFTWARE \ Wow6432Nodeの下に作成します! C++ Builderの2010は32ビットのexeファイルを生成し、それが32のアプリセクションの下に保存されますよう
実行しているWindows 7のx64TRegistryを使用してHKLMでキーを作成する方法

加えOpenKeyEx

がある....フラグまたはを使用してそれを行うにTRegistryオブジェクトを使用する方法ここ

は私のコード

TRegistry * reg=new TRegistry(KEY_WRITE); 
try 
{ 
    reg->RootKey=HKEY_LOCAL_MACHINE; 
    if (!reg->OpenKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList",0)) 
    { 
    //reg->CreateKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList"); 
    } 
    //reg->Access=KEY_WRITE; 
    bool ores=reg->OpenKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList",true); 
    reg->WriteString("ouser","0"); 
    reg->CloseKey(); 
} 
catch (...) 
{ 
    delete reg; 
} 

答えて

4

あるNTそこ:(あなたは、32ビットプロセスから64ビットのレジストリキーにアクセスしようとしている。そのためには、あなたは含める必要がKEY_WOW64_64KEYフラグ鍵を開け、例えば:

TRegistry *reg = new TRegistry(KEY_WRITE | KEY_WOW64_64KEY); 

または:将来的には

reg->Access = KEY_WRITE | KEY_WOW64_64KEY; 

、あなたが64ビット開発をサポートし、後でXE2または、にアップグレードした場合、その後、あなたが指定する必要がありますあなたはWOW64の下で実行されている32ビットプロセスですフラグ場合のみIsWow64Process()レポート、例えば:

BOOL bIsWow64 = FALSE; 
IsWow64Process(GetCurrentProcess(), &bIsWow64); 

long flags = KEY_WRITE; 
if (bIsWow64) flags |= KEY_WOW64_64KEY; 

TRegistry *reg = new TRegistry(flags); 

reg->Access = flags; 
+0

+ありがとうございました。 –

関連する問題