2016-08-26 14 views
0

RegCopyTreeを使用してすべてのサブキーと値を別のサブキーにコピーしようとしていますが、エラーコード5が表示されます。つまり、ACCESS DENIEDです。CでRegCopyTreeを使用してアクセスを拒否する

私はKEY_CREATE_SUB_KEYへのアクセスを依頼しましたが、まだ失敗しています。私はまた、管理者としてアプリを走らせましたが、それはまったく機能しませんでした。

私を助けることができますか?ここで

は私のコードです:

は右REGSAM変数にKEY_ALL_ACCESSアクセスを使用していた。ここでは

int wmain() 
{ 
    //RegOpenKeyEx 
    HKEY hKey = HKEY_CURRENT_USER; 
    LPCWSTR subKeyOpen = L"WinSide"; 
    DWORD options = 0; 
    REGSAM samDesired = KEY_READ; 
    HKEY openedKey; 

    //Opening the HKCU\WinSide subkey 
    LONG openKey = RegOpenKeyEx(hKey, subKeyOpen, options, 
            samDesired, &openedKey); 

    LPCWSTR subKeyDest = L"WinSi"; 
    REGSAM destSamDesired = KEY_CREATE_SUB_KEY; 
    HKEY destOpenedKey; 

    //Opening the HKCU\WinSi subkey - this is the destination subkey 
    LONG destOpenKey = RegOpenKeyEx(hKey, subKeyDest, options, 
           destSamDesired, &destOpenedKey); 


    if (openKey != ERROR_SUCCESS) 
    { 
     wprintf(L"Error opening the key. Code: %li\n", openKey); 
    } 
    else 
    { 
     wprintf(L"Key opened!\n"); 

     if (destOpenKey != ERROR_SUCCESS) 
      wprintf(L"Error code: %li\n", destOpenKey); 
     else 
     { 
      //RegCopyTree 
      HKEY keyDest; 

      LONG copyKey = RegCopyTree(openedKey, NULL, destOpenedKey); 

      if (copyKey != ERROR_SUCCESS) 
       wprintf(L"Error copying the key. Code: %li\n", copyKey); 
      else 
      { 
       wprintf(L"Key copied!\n"); 
      } 

     } 



     RegCloseKey(openedKey); 
     RegCloseKey(destOpenedKey); 

    } 

    return 0; 
} 
+0

私は両方の開口部で 'KEY_WRITE'を試みましたが、それでも同じエラーです。 –

+0

答えを追加しました。 –

答えて

0

は、私は問題を解決する方法です。この方法では、

REGSAM samDesired = KEY_ALL_ACCESS; 

REGSAM destSamDesired = KEY_ALL_ACCESS; 
関連する問題