[ad_1]
私がやろうとしているのは、単純なことです。 レジストリからアイテムを読み取るようなものです。 ちょっと待ってください!
例: (HKEY_CURRENT_USER) のドメインの下にあるレジストリ アドレス (\SOFTWARE\Acer\Hermes) を指定すると、
アイテムのレジストリ アドレスの下にあるアイテム情報を読み取り/取得しようとしました。 レジストリ アドレスを開くことはできますが、項目を読み取るには、
は心が痛む経験でした。 私は RegenumValue ではなく、GetRegValue、RegQueryValueEx を使用してきました。
それらの間の。 これらすべての呼び出しの最終結果は、エラー コード 2(two) でした。 そして、はい、私は言われた規則に従おうとしてきました。
そして、それは非常にイライラするプロセスでした。 エラーコード2(2)について私が見つけた定義から、MSはそれに意味を与えます
「FILE_NOT_FOUND」の。 ファイルが見つかりません???? 次のようなレジストリ関数でレジストリを開くことができます: RegOpenKeyExA または RegCreateKeyExA
そしてうまくやった。 私が使用する「C」コードを含めます。 はい、コードに過去の作業試行を残しました。これは、過去に失敗したさまざまな試行を示しています。
私の多くの欲求不満を許してください。 誰かが私を正しい道に戻し、これが正しく機能するのを手伝ってくれませんか。 しかし、前もって感謝します。
そして、この「関数の最終結果を取得して、ゼロ(0)のエラーコードを残してください…
そして再び、大きな感謝!.
(メンバー 15028314) … あ、これは学校の宿題じゃないです。
私が試したこと:
///GetRegStrValue int GetRegStrValue(char * keyaddress, char * keypeople, char * retsname, int idlocate) { //// Dim retval$, hSubKey As Long, dwType As Long, sz As Long #define SBUFFER 8192 char value[255]; DWORD BufferSize = SBUFFER; int iretval, rv, iwhloc = 2345, iwhch = 1; long lrv, rv1,irv; char defaultvalue[12]; HKEY hSubKey = NULL; char buffer[100]; DWORD DWbufsize; strcpy(defaultvalue, "XXXXX"); //// strcpy(buffer, "\0"); #define MAX_VER_LEN 255 DWORD data_len = MAX_VER_LEN; char new_data[MAX_VER_LEN]; /// REGSAM flagz = KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS; iretval = 0; lrv = RegOpenKeyExA(HKEY_CURRENT_USER, keyaddress, 0, KEY_READ | KEY_WRITE | KEY_WOW64_64KEY, &hSubKey); if (lrv != ERROR_SUCCESS) { lrv = RegCreateAddSetString(keyaddress, keypeople, defaultvalue, iwhch, iwhloc); } if (lrv == ERROR_SUCCESS) { RegCloseKey(hSubKey); //// somewhere in this area, an exception unhandler was thrown... //if (isWin64Bit()) flagz |= KEY_WOW64_64KEY; //else flagz |= KEY_WOW64_32KEY; lrv = RegOpenKeyExA(HKEY_CURRENT_USER, keyaddress, 0, KEY_READ | KEY_WRITE, &hSubKey); strcpy(buffer, "\0"); strcpy(new_data, "\0"); /// OK TO HERE... //// | RRF_SUBKEY_WOW6464KEY ///------------------------------------------ lrv = RegGetValue(hSubKey, NULL, (LPCWSTR)keypeople, RRF_RT_REG_SZ , NULL, (PVOID)&new_data, &data_len); //// this above sentence is giving me major grief!! //rv1 = RegQueryValueEx(hSubKey, (LPCWSTR)keypeople, NULL, &type, 0, &nbytes); ///// ///results = (char*)malloc(nbytes + 1); ///lrv = RegQueryValueEx( hSubKey, (LPCWSTR)keypeople, NULL, &type, (BYTE*)buffer, &DWbufsize ); if (lrv == ERROR_SUCCESS) { //// Exception Unhandled thrown approx here.. RegCloseKey(hSubKey); //// somewhere in this area, an exception unhandler was thrown... iretval = 1; /// strcpy(retsname, results); /// printf(" *K IN* GetRegStrValue, %d, <%s> \n", strlen(results), results); printf(" *** GetRegStrValue, %d, <%s> \n", strlen( (char *)buffer), buffer); } else { iretval = -2; rv = ReportErrorString(lrv, idlocate); } /// <error-type> hSubKey /// exception Unhandled has been thrown here. located?? at "return(iretval); } else { iretval = -3; rv = ReportErrorString(lrv,idlocate); } return(iretval); } /////////------------------------------------
解決策 1
一部の関数は定義されていないようです。 ただし、次のように動作します。
TCHAR* lpSubKey = _T("SOFTWARE\\Logitech"); HKEY hSubKey = NULL; LSTATUS lrv = RegOpenKeyExW(HKEY_CURRENT_USER, lpSubKey, 0, KEY_READ | KEY_WRITE | KEY_WOW64_64KEY, &hSubKey);
[ad_2]
コメント