共用方式為


登錄值類型

登錄值 可以儲存數種格式之一的數據,例如字串值或整數值。 當您將資料儲存在登錄值中時,例如呼叫 RegSetValueEx 函式,您可以指定下表中的其中一個類型來指出所儲存的數據類型。 當您擷取登錄值時,RegQueryValueEx 等函式 使用這些類型來指出所擷取的數據類型。

下列登入值型態定義於 winnt.h 頭檔中:

價值 類型
REG_BINARY 任何形式的二進位數據。
REG_DWORD 32 位數位。
REG_DWORD_LITTLE_ENDIAN 位元組格式為32位的數位,。 Windows 的設計目的是在小端電腦架構上執行。 因此,此值會在 Windows 頭檔中定義為 REG_DWORD
REG_DWORD_BIG_ENDIAN 大階格式的 32 位元數字。 某些 UNIX 系統支援大端架構。
REG_EXPAND_SZ Null 終止的字串,包含未展開的環境變數參考,例如,%PATH%。 這是 Unicode 或 ANSI 字串,視您使用 Unicode 或 ANSI 函式而定。 若要展開環境變數參考,請使用 ExpandEnvironmentStrings 函式。
REG_LINK 以 null 終止的 Unicode 字串,其中包含使用 REG_OPTION_CREATE_LINK呼叫 RegCreateKeyEx 函式所建立之符號鏈接的目標路徑。
REG_MULTI_SZ 以空字串結尾的 Null 字串序列(\0)。 以下是範例:String1\0String2\0String3\0LastString\0\0。 第一個 \0 會終止第一個字串、第二個自最後一個字元串 \0 終止最後一個字串,最後一個 \0 會終止序列。 請注意,最終終止符必須納入字串的長度。
REG_NONE 沒有定義的實值類型。
REG_QWORD 64 位數位。
REG_QWORD_LITTLE_ENDIAN 64 位數位,格式為小到小。 Windows 的設計目的是在小端電腦架構上執行。 因此,此值會在 Windows 頭檔中定義為 REG_QWORD
REG_SZ 以 Null 結尾的字串。 這是 Unicode 或 ANSI 字串,視您使用 Unicode 或 ANSI 函式而定。

字串值

如果數據具有 REG_SZREG_MULTI_SZREG_EXPAND_SZ 類型,則字串可能尚未以適當的終止 Null 字元儲存。 因此,從登錄讀取字串時,您必須確定字串在使用之前已正確終止;否則,它可能會覆寫緩衝區。 請注意,REG_MULTI_SZ 字串應該有兩個終止的 Null 字元。

當您將字串寫入登錄時,您必須指定字串的長度,包括終止的 Null 字元 (\0)。 常見的錯誤是使用 strlen 函式來判斷字串的長度,但忘記 strlen 只會傳回字串中的字元計數,而不會計算終止 Null。 因此,您應該使用 strlen(string) + 1 來計算字串的長度

REG_MULTI_SZ 字串以長度 為 0的字串結尾。 因此,不可能在序列中包含長度為零的字串。 序列的定義如下:\0

下列範例會逐步執行 REG_MULTI_SZ 字串。

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

void SampleSzz(PTSTR pszz)
{
   _tprintf(_TEXT("\tBegin multi-sz string\n"));
   while (*pszz) 
   {
      _tprintf(_TEXT("\t\t%s\n"), pszz);
      pszz = pszz + _tcslen(pszz) + 1;
   }
   _tprintf(_TEXT("\tEnd multi-sz\n"));
}

int __cdecl main(int argc, char **argv)
{
   // Because the compiler adds a \0 at the end of quoted strings, 
   // there are two \0 terminators at the end. 

   _tprintf(_TEXT("Conventional multi-sz string:\n"));  
   SampleSzz(_TEXT("String1\0String2\0String3\0LastString\0"));

   _tprintf(_TEXT("\nTest case with no strings:\n"));  
   SampleSzz(_TEXT(""));

   return 0;
}

位元組格式

位元組格式,多位元組值會儲存在記憶體中,從最低位元組(小端)儲存到最高的位元組。 例如,值 0x12345678 會以小端格式儲存為 0x78 0x56 0x34 0x12

big-endian 格式中,多位元節值會儲存在記憶體中,從最高的位元組(大端)儲存至最低位元組。 例如,0x12345678 的值會以 big-endian 格式儲存為 0x12 0x34 0x56 0x78

這些術語對喬納森·斯威夫特的諷刺小說 格利弗的旅行來說,這些術語是輕心的文化參考。