如何將 DWORD 寫入登錄

文章翻譯 文章翻譯
文章編號: 258262 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

有時候就必須將資訊寫入登錄。本文章顯示如何將 REG_DWORD 值寫入至登錄這個文件中建立一個索引鍵。如果不已經存在您正在撰寫的值必須將它加入。

其他相關資訊

重要: 本文包含修改登錄的相關資訊。修改登錄之前請確定它備份起來,並請確定您瞭解如何在發生問題時還原登錄。如如何備份、 還原,以及編輯登錄有關,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
256986Microsoft Windows 登錄的描述

警告: 如果您未正確使用登錄編輯程式可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 不保證您可以解決因不當使用 「 登錄編輯器 」 的問題。使用 「 登錄編輯程式 」,請自行負擔相關的風險。

登錄編輯程式,本文中的相關資訊是 Microsoft Windows NT 和 Microsoft Windows 2000。如果您正在執行 Microsoft Windows 9x X,您需要使用 Regedit.exe Regedt32.exe 代替。

注意:本文使用登錄機碼,只是為測試目的而建立,當您完成時應該刪除測試。
  1. 啟動 「 登錄編輯程式 」 (Regedt32.exe)。
  2. 在登錄中找到下列機碼:
       HKEY_LOCAL_MACHINE\Software
    					
  3. 在 [編輯] 功能表上按一下 [新增機碼,],然後再新增下列登錄機碼:
       VfpREGTest
    					
  4. 在 [編輯] 功能表上按一下 [新增值],],然後再新增下列登錄值:
       Value Name: MyDWORD
       Data Type:  REG_DWORD
       Value:      0
    					
  5. 結束 [登錄編輯程式]。
  6. 從 Visual FoxPro 建立程式,並輸入下列程式碼:
    #DEFINE HKEY_CLASSES_ROOT           -2147483648
    #DEFINE HKEY_CURRENT_USER           -2147483647
    #DEFINE HKEY_LOCAL_MACHINE          -2147483646
    #DEFINE HKEY_USERS                  -2147483645
    
    LOCAL nKey, cSubKey, cValue, nValueToWrite, lSuccess
    nKey = HKEY_LOCAL_MACHINE
    nValueToWrite = 1
    cSubKey = "Software\VfpREGTest"
    cValue = "MyDWORD"
    
    lSuccess = WriteRegDWORD(nKey, cSubKey, cValue, nValueToWrite)
    
    IF (lSuccess) THEN
       =MESSAGEBOX("Function Successful.")
    ELSE
       =MESSAGEBOX("Function Not Successful.")
    ENDIF
    
    FUNCTION WriteRegDWORD
       * This function writes a REG_DWORD to the registry. It will return .T.
       * if successful and .F. if it isn't successful.
       PARAMETERS  nKey, cSubKey, cValue,  nValueToWrite
       * nKey The root key to open. It can be any of the constants defined below.
       *#DEFINE HKEY_CLASSES_ROOT           -2147483648
       *#DEFINE HKEY_CURRENT_USER           -2147483647
       *#DEFINE HKEY_LOCAL_MACHINE          -2147483646
       *#DEFINE HKEY_USERS                  -2147483645
       *cSubKey The SubKey to open.
       *cValue The value that is going to be written.
       *nValueToWrite The value to write to the registry
    
       * Constants that are needed for Registry functions
       #DEFINE REG_DWORD   4
    
       * WIN 32 API functions that are used
       DECLARE Integer RegOpenKey IN Win32API ;
          Integer nHKey, String @cSubKey, Integer @nResult
       DECLARE Integer RegSetValueEx IN Win32API ;
          Integer hKey, String lpszValueName, Integer dwReserved,;
          Integer fdwType, String lpbData, Integer cbData
       DECLARE Integer RegCloseKey IN Win32API Integer nHKey
    
       * Local variables used
       LOCAL nErrCode          && Error Code returned from Registry functions
       LOCAL nKeyHandle        && Handle to Key that is opened in the Registry
       LOCAL lpdwValueType     && Type of Value that we are looking for.
       LOCAL lpbValue          && The data stored in the value
       LOCAL lpcbValueSize     && Size of the variable
       LOCAL lpdwReserved      && Reserved Must be 0
    
       * Initialize the variables
       nKeyHandle = 0
       lpdwReserved = 0           
       lpdwValueType = REG_DWORD
       lpcbValueSize = 4     && DWORD is 4 bytes
    
       lpbValue = LongToStr(nValueToWrite)
    
       nErrCode = RegOpenKey(nKey, cSubKey, @nKeyHandle)
       * If the error code isn't 0, then the key doesn't exist or can't be opened.
       IF (nErrCode # 0) THEN
          RETURN .F.
       ENDIF
    
       nErrCode=RegSetValueEx(nKeyHandle, cValue, lpdwReserved, lpdwValueType, lpbValue, lpcbValueSize)
       =RegCloseKey(nKeyHandle)
       IF (nErrCode # 0) THEN
          RETURN .F.
       ENDIF
    RETURN .T.
    
    FUNCTION LongToStr
    * This function converts a long to a string
       PARAMETERS nLongVal
       LOCAL nLoopVar, strReturn
    
       strReturn = ""
       FOR nLoopVar = 24 TO 0 STEP -8
          strReturn = CHR(INT(nLongVal/(2^nLoopVar))) + strReturn
          nLongVal = MOD(nLongVal, (2^nLoopVar))
       NEXT
    RETURN strReturn
    * End of Code
    					
  7. 執行步驟 1 中建立程式碼。宣告函式的成敗會出現一個訊息方塊。regedt32.exe 可用來驗證值寫入至登錄。
  8. 您可以使用您的資訊寫入到登錄檔來取代 nKey、 cSubKey、 cValue 及 nValueToWrite。
(保留所有的權限 c) Microsoft Corporation 2000。由標示 Barnard,Microsoft Corporation 的貢獻。

?考


如需從登錄取得數值的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
244675如何 ToUse Windows 指令碼主機讀取,寫入、 刪除登錄

屬性

文章編號: 258262 - 上次校閱: 2004年7月15日 - 版次: 2.2
這篇文章中的資訊適用於:
  • Microsoft Visual FoxPro 3.0 Standard Edition
  • Microsoft Visual FoxPro 3.0b Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
關鍵字:?
kbmt kbapi kbcodesnippet kbhowto kbregistry KB258262 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:258262
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com