1. 程式人生 > >Windows API一日一練 63 RegOpenKeyEx和RegCreateKeyEx函式

Windows API一日一練 63 RegOpenKeyEx和RegCreateKeyEx函式

由於電腦經常會關閉,或者應用程式也會經常關閉,但有一些引數是經常需要儲存。比如當你開啟程式,並設定了視窗的大小,想每次開啟時都設定視窗為上次開啟的大小。這樣就需要儲存視窗的大小,那麼視窗大小的引數儲存到那裡呢?其實在 Windows 裡最方便的做法,就是儲存到登錄檔裡。又比如遊戲登入時,總是想儲存最後一個登入的使用者,那麼也需要儲存這個使用者到登錄檔裡。其實登錄檔是 Windows 儲存系統配置的資料庫,比如不同的語言設定,不同的時區設定,不同的使用者登入,不同的許可權等等。下面就來學習怎麼樣使用函式 RegOpenKeyEx 來開啟登錄檔裡的鍵和用函式 RegCreateKeyEx
來建立新的鍵。   函式 RegOpenKeyEx RegCreateKeyEx 宣告如下:   WINADVAPI LONG APIENTRY RegOpenKeyExA (     __in HKEY hKey,     __in_opt LPCSTR lpSubKey,     __reserved DWORD ulOptions,
    __in REGSAM samDesired,     __out PHKEY phkResult     ); WINADVAPI LONG APIENTRY RegOpenKeyExW (     __in HKEY hKey,     __in_opt LPCWSTR lpSubKey,     __reserved DWORD ulOptions,
    __in REGSAM samDesired,     __out PHKEY phkResult     ); #ifdef UNICODE #define RegOpenKeyEx RegOpenKeyExW #else #define RegOpenKeyEx RegOpenKeyExA #endif // !UNICODE     WINADVAPI LONG APIENTRY RegCreateKeyExA (     __in HKEY hKey,     __in LPCSTR lpSubKey,     __reserved DWORD Reserved,     __in_opt LPSTR lpClass,     __in DWORD dwOptions,     __in REGSAM samDesired,     __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,     __out PHKEY phkResult,     __out_opt LPDWORD lpdwDisposition     ); WINADVAPI LONG APIENTRY RegCreateKeyExW (     __in HKEY hKey,     __in LPCWSTR lpSubKey,     __reserved DWORD Reserved,     __in_opt LPWSTR lpClass,     __in DWORD dwOptions,     __in REGSAM samDesired,     __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,     __out PHKEY phkResult,     __out_opt LPDWORD lpdwDisposition     ); #ifdef UNICODE #define RegCreateKeyEx RegCreateKeyExW #else #define RegCreateKeyEx RegCreateKeyExA #endif // !UNICODE   hKey 是主鍵。 lpSubKey 是子鍵。 ulOptions 是選項。 samDesired 是鍵的操作。 phkResult 是開啟的鍵返回。 lpClass 是新鍵值。   呼叫函式的例子如下: #001 // 打登錄檔。 HKEY_CURRENT_USER/"Software"/"Wincpp"/"testreg" #002  // 蔡軍生  2007/11/02 QQ:9073204 深圳 #003  HKEY GetAppRegistryKey(void) #004  { #005         HKEY hAppKey = NULL; #006         HKEY hSoftKey = NULL; #007         HKEY hCompanyKey = NULL; #008  #009         // 開啟 HKEY_CURRENT_USER/"Software" #010        if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("software"), 0, KEY_WRITE|KEY_READ, #011              &hSoftKey) == ERROR_SUCCESS) #012         { #013               DWORD dw; #014               // 建立並開啟 HKEY_CURRENT_USER/"Software"/"Wincpp" #015              if (RegCreateKeyEx(hSoftKey, _T("Wincpp"), 0, REG_NONE, #016                   REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL, #017                   &hCompanyKey, &dw) == ERROR_SUCCESS) #018               { #019                    // 建立並開啟 HKEY_CURRENT_USER/"Software"/"Wincpp"/"testreg" #020                    RegCreateKeyEx(hCompanyKey, _T("testreg"), 0, REG_NONE, #021                          REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL, #022                          &hAppKey, &dw); #023               } #024         } #025  #026         // 關閉開啟的鍵值。 #027         if (hSoftKey != NULL) #028         { #029               RegCloseKey(hSoftKey); #030         }    #031  #032         if (hCompanyKey != NULL) #033         { #034               RegCloseKey(hCompanyKey); #035         }    #036  #037         return hAppKey; #038  }  

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net