2011-12-21 8 views
0

MyTestAppという名前の新しいレジストリキーを作成し、そこに新しいデータを追加したいのですが、その方法はわかりません。だから私は次のコードを持っています。レジストリキーに新しいデータを作成しますか?

bool CreateSectionDataRegistry(CString sectionData, CString sectionValue) 
{ 
    HKEY hKey;  //registry key handle 
    LONG lResult; //result of registry operations 
    DWORD dwType, dwSize=0; 

    //try to open the key that we are currently pointing at with rootPath 
    lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, rootPath + "\\" + "MyTestApp", NULL, KEY_ALL_ACCESS, &hKey); 

    if (lResult == ERROR_SUCCESS || lResult == ERROR_MORE_DATA) 
    { 
     //we have successfully opened the registry key. Now try to access the data 
     lResult = RegQueryValueEx(HKEY_LOCAL_MACHINE, sectionData, 0, &dwType, NULL, &dwSize); 

     if(lResult == ERROR_SUCCESS || lResult == ERROR_MORE_DATA) 
     { 
          //data already exists, so just return 
      RegCloseKey(hKey); 
      return true; 
     } 
     else//section data does not exist, so create new data 
     {   
      DWORD dwDisposition; 
      lResult = RegCreateKeyEx(HKEY_LOCAL_MACHINE, sectionData, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDisposition); 
      RegCloseKey(hKey); 
      return true; 
     } 
    } 

    return false; 
} 

しかし、私はRegCreateKeyEx()コールにダウントレースするとき、それは成功を返しますが、データがMyTestAppレジストリキーの下または任意の場所をレジストリ内に作成されていません。 MyTestAppの下に新しいデータを作成するための正しい関数を使用していますか?上記の議論からも、私はCString sectionValueを持っていますので、REG_SZまたはREG_DWORDのデータを作成する必要があるかどうかを確認するにはどうすればよいですか?

ありがとうございます!

+0

おそらく 'windows-mobile'によって、pre-7を意味するでしょうか? –

+0

あなたは、WinCEまたはWindows Mobileのいずれかのハンドヘルドデバイス用のタグ付きを意味しました。 – Lufia

+0

ええ、そういう意味です。チェックしてるだけ。 :) –

答えて

0

RegSetValueEx()を呼び出すだけで、MyTestAppの下にレジストリ値を作成する必要があるようです。おそらくちょうど私ですが、MicrosoftのWebサイトのRegSetValueEx()定義を見ると、値を設定すると言われていますが、値が存在しない場合は値を作成しません。

LPTSTR lpszData = new TCHAR[sectionValue.GetLength() + 1]; 
_tcscpy(lpszData, sectionValue); 
lResult = RegSetValueEx(hKey, sectionData, 0, REG_SZ, (LPBYTE)lpszData, sectionValue.GetLength()); 

だから今、それはsectionValueがREG_SZまたはREG_DWORDの場合しかし、私はまだわかりません、レジストリ値を作成します。

+0

RegSetValueEx関数は、存在しない場合は値を作成し、存在する場合は古い値を上書きします。 REG_SZにデータ型を設定すると、レジストリに記録されるデータ型になります。値を読み取ると、そのデータ型はREG_SZとして返されます。 – BitBank

関連する問題