วิธีการอ่านแบบ REG_MULTI_SZ จากรีจิสทรี

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 258528 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

บทความนี้แสดงวิธีการอ่านค่า REG_MULTI_SZ จากรีจิสทรี

ข้อมูลเพิ่มเติม

หมายเหตุ:: บทความนี้จำเป็นต้องใช้ regedt32.exe ซึ่งมีอยู่ใน Microsoft Windows NT และ Microsoft Windows 2000 การเพิ่มคีย์การทดสอบและค่าเท่านั้น รวมรหัสทำงานบน Windows 9 X ด้วยค่า REG_MULTI_SZ ที่มีอยู่

สิ่งสำคัญ: บทความนี้ประกอบด้วยข้อมูลเกี่ยวกับการปรับเปลี่ยนรีจิสทรี ก่อนที่จะแก้ไขรีจิสตรี คุณต้องสำรองข้อมูลนี้ไว้ และต้องทราบวิธีเรียกข้อมูลรีจิสตรีกลับคืน กรณีที่มีปัญหาเกิดขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีสำรอง คืนค่า และแก้ไขรีจิสทรี โปรดคลิกที่หมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
256986คำอธิบายสำหรับ Microsoft Windows Registry

คำเตือน: ถ้าคุณใช้ Registry Editor ไม่ถูกต้อง คุณอาจทำให้เกิดปัญหาร้ายแรงซึ่งอาจทำให้คุณติดตั้งระบบปฏิบัติการของคุณ ไมโครซอฟท์ไม่สามารถรับประกันว่า คุณจะสามารถแก้ปัญหาที่เกิดขึ้นจากการใช้ Registry Editor ไม่ถูกต้อง โปรดใช้ Registry Editor โดยยอมรับความเสี่ยงที่อาจเกิดขึ้น

หมายเหตุ:: บทความนี้ใช้รีจิสทรีคีย์ที่ถูกสร้างขึ้นสำหรับการทดสอบเท่านั้น และควรถูกลบเมื่อคุณเสร็จสิ้น
  1. เริ่มการทำงานของโปรแกรม Registry Editor (Regedt32.exe)
  2. ค้นหาคีย์ต่อไปนี้ในรีจิสทรี:
       HKEY_LOCAL_MACHINE\Software
    					
  3. ในการแก้ไขเมนู คลิกเพิ่มคีย์แล้ว เพิ่มรีจิสทรีคีย์ต่อไปนี้:
       Key Name:   VfpRegTest
    					
  4. คลิกที่คีย์เพิ่มเข้าไปในขั้นตอนที่ 3 ในการแก้ไขเมนู คลิกเพิ่มค่าแล้ว เพิ่มค่าต่อไปนี้:
       Value Name: TestREG_MULTI_SZ
       Data Type:  REG_MULTI_SZ
       Value:      Line1
                   Line2
                   Line3
                   Line4   
    
       Be sure to press the Enter key after each line.
    					
  5. ออกจากโปรแกรม Registry Editor
  6. จาก FoxPro Visual สร้างโปรแกรม และป้อนรหัสต่อไปนี้:
    *Start of Code
    #DEFINE HKEY_LOCAL_MACHINE   -2147483646
    
    LOCAL nKey, cSubKey, cValue, nStrings, acValueRead, nLoopVar
    nKey = HKEY_LOCAL_MACHINE
    cSubKey = "Software\VfpRegTest"
    cValue = "TestREG_MULTI_SZ"
    
    nStrings = ReadREG_MULTI_SZ(nKey, cSubKey, cValue, @acValueRead)
    IF (nStrings > 0) THEN
       =MESSAGEBOX("Function Successful.")
       FOR nLoopVar = 1 TO nStrings
          ? acValueRead(nLoopVar)
       ENDFOR	
    ELSE
       =MESSAGEBOX("Function Not Successful.")
    ENDIF
    
    FUNCTION ReadREG_MULTI_SZ
    * This function reads a REG_MULTI_SZ value from the registry. It will return
    * the number of Elements in acValueRead if successful and store the 
    * strings in acValueRead. If not successful, it will return 0 and 
    * acValueRead will contain 0 elements
       PARAMETERS  nKey, cSubKey, cValue,  acValueRead
       * 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 read.
       * acValueRead Array of strings read from the registry.
    
       * Constants that are needed for Registry functions
       #DEFINE REG_MULTI_SZ                 7
    
       * WIN 32 API functions that are used
       DECLARE Integer RegOpenKey IN Win32API ;
          Integer nHKey, String @cSubKey, Integer @nResult
       DECLARE Integer RegQueryValueEx IN Win32API ;
          Integer nHKey, String lpszValueName, Integer dwReserved,;
          Integer @lpdwType, String @lpbData, Integer @lpcbData
       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
       LOCAL lNotDone      && Used to Exit Loop
       LOCAL nOccurance    && The occurrence of CHR(0) in the string
       LOCAL nPrevPos      && Previous element in Array 
       LOCAL nCurrPos      && Current element in Array being processed
       LOCAL nElements     && Number of Elements in the Array
       
       * Initialize the variables
       nKeyHandle = 0
       lpdwReserved = 0           
       lpdwValueType = REG_MULTI_SZ
       lNotDone = .T.
       nOccurance = 1
       nPrevPos = 1
       nElements = 0
    
       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 0
       ENDIF
    
       lpbValue = ""
       lpcbValueSize = 1 
       * Get the size of the data in the value
       nErrCode=RegQueryValueEx(nKeyHandle, cValue, lpdwReserved, @lpdwValueType, @lpbValue, @lpcbValueSize)
    
       * Make the buffer big enough
       lpbValue = SPACE(lpcbValueSize)   
       nErrCode=RegQueryValueEx(nKeyHandle, cValue, lpdwReserved, @lpdwValueType, @lpbValue, @lpcbValueSize)
       
       =RegCloseKey(nKeyHandle)
       IF (nErrCode # 0) THEN
          RETURN 0
       ENDIF
    
       * This loop fills an array with the strings stored in the registry
       DO WHILE lNotDone
          nCurrPos = AT(CHR(0), lpbValue, nOccurance)  && CHR(0) is used to separate lines in the registry
          IF ((nCurrPos > 0) AND (nCurrPos < lpcbValueSize)) THEN
             nElements = nElements + 1
             DIMENSION acValueRead(nElements)
             acValueRead(nElements) = SUBSTR(lpbValue, nPrevPos, nCurrPos - nPrevPos)
             nPrevPos = nCurrPos + 1
             nOccurance = nOccurance + 1
          ELSE
             lNotDone = .F.
          ENDIF
       ENDDO
    RETURN nElements
    * End of Code
    					
  7. เรียกใช้โปรแกรมที่สร้างขึ้นในขั้นตอนที่ 6 กล่องข้อความปรากฏในการพูด "ฟังก์ชันสำเร็จ" และค่าต่าง ๆ ที่ปรากฏอยู่บนเดสก์ท็อป
  8. คุณสามารถแทน nKey, cSubKey และ cValue ด้วยข้อมูลของคุณถูกอ่านจากรีจิสทรี
(c) Microsoft Corporation 2000 สิทธิ์ทั้งหมดที่สำรองไว้ contributions โดยทำเครื่องหมาย Barnard, Microsoft Corporation

ข้อมูลอ้างอิง


สำหรับข้อมูลเพิ่มเติมที่ได้รับค่าจากรีจิสทรี คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
244675อย่างไรโฮสต์สคริปต์ ToUse Windows เพื่ออ่าน เขียน ลบรีจิสทรี

คุณสมบัติ

หมายเลขบทความ (Article ID): 258528 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Visual FoxPro 3.0 Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 6.0 Professional Edition
Keywords: 
kbapi kbcodesnippet kbhowto kbmt KB258528 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:258528

ให้ข้อเสนอแนะ

 

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