31 if (!fp)
return FALSE;
39 if (!fbuf)
goto error;
51 lok(!
lstrcmpW(fbuf, wstr),
"export data does not match expected data\n");
66 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
67 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n\r\n";
70 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
71 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
72 "\"DWORD\"=dword:00000100\r\n"
73 "\"String\"=\"Your text here...\"\r\n\r\n";
76 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
77 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
78 "\"DWORD\"=dword:00000100\r\n"
79 "\"String\"=\"Your text here...\"\r\n\r\n"
80 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey1]\r\n"
81 "\"Binary\"=hex:11,22,33,44\r\n"
82 "\"Undefined hex\"=hex(100):25,50,41,54,48,25,00\r\n\r\n"
83 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey2a]\r\n"
84 "\"double\\\"quote\"=\"\\\"Hello, World!\\\"\"\r\n"
85 "\"single'quote\"=dword:00000008\r\n\r\n"
86 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey2a\\Subkey2b]\r\n"
87 "@=\"Default value name\"\r\n"
88 "\"Multiple strings\"=hex(7):4c,00,69,00,6e,00,65,00,31,00,00,00,4c,00,69,00,6e,\\\r\n"
89 " 00,65,00,32,00,00,00,4c,00,69,00,6e,00,65,00,33,00,00,00,00,00\r\n\r\n"
90 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey3a]\r\n"
91 "\"Backslash\"=\"Use \\\\\\\\ to escape a backslash\"\r\n\r\n"
92 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey3a\\Subkey3b]\r\n\r\n"
93 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey3a\\Subkey3b\\Subkey3c]\r\n"
94 "\"String expansion\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00,25,00,50,\\\r\n"
95 " 00,41,00,54,00,48,00,25,00,00,00\r\n"
96 "\"Zero data type\"=hex(0):56,61,6c,75,65,00\r\n\r\n"
97 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey4]\r\n"
98 "@=dword:12345678\r\n"
99 "\"43981\"=hex(abcd):56,61,6c,75,65,00\r\n\r\n";
102 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
103 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n\r\n"
104 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey1]\r\n\r\n"
105 "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey2]\r\n\r\n";
108 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
109 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
110 "\"Value 2\"=\"I was added first!\"\r\n"
111 "\"Value 1\"=\"I was added second!\"\r\n\r\n";
114 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
115 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
116 "\"Wine1a\"=hex(0):\r\n"
117 "\"Wine1b\"=\"\"\r\n"
118 "\"Wine1c\"=hex(2):\r\n"
119 "\"Wine1d\"=hex:\r\n"
120 "\"Wine1e\"=hex(4):\r\n"
121 "\"Wine1f\"=hex(7):\r\n"
122 "\"Wine1g\"=hex(100):\r\n"
123 "\"Wine1h\"=hex(abcd):\r\n\r\n";
126 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
127 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
128 "\"Wine2a\"=\"\"\r\n"
129 "\"Wine2b\"=hex:\r\n"
130 "\"Wine2c\"=hex(4):\r\n\r\n";
133 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
134 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
135 "\"Wine3a\"=\"Value\"\r\n"
136 "\"Wine3b\"=hex:12,34,56,78\r\n"
137 "\"Wine3c\"=dword:10203040\r\n\r\n";
140 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
141 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
142 "\"Wine4a\"=dword:00000005\r\n"
143 "\"Wine4b\"=\"\"\r\n"
144 "\"Wine4c\"=\"Value\"\r\n"
145 "\"Wine4d\"=\"\"\r\n"
146 "\"Wine4e\"=dword:00000100\r\n"
147 "\"Wine4f\"=\"\"\r\n"
148 "\"Wine4g\"=\"Value2\"\r\n"
149 "\"Wine4h\"=\"abc\"\r\n\r\n";
152 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
153 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
154 "\"count/up\"=\"one/two/three\"\r\n"
155 "\"\\\\foo\\\\bar\"=\"\"\r\n\r\n"
156 "[HKEY_CURRENT_USER\\" KEY_BASE "\\https://winehq.org]\r\n\r\n";
159 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
160 "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
161 "\"Wine5a\"=\"\\\\0\"\r\n"
162 "\"Wine5b\"=\"\\\\0\\\\0\"\r\n"
163 "\"Wine5c\"=\"Value1\\\\0\"\r\n"
164 "\"Wine5d\"=\"Value2\\\\0\\\\0\\\\0\\\\0\"\r\n"
165 "\"Wine5e\"=\"Value3\\\\0Value4\"\r\n"
166 "\"Wine5f\"=\"\\\\0Value5\"\r\n\r\n";
169 "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
170 "[HKEY_LOCAL_MACHINE\\" KEY_BASE "]\r\n"
171 "\"DWORD\"=dword:00000100\r\n"
172 "\"String\"=\"Your text here...\"\r\n\r\n"
173 "[HKEY_LOCAL_MACHINE\\" KEY_BASE "\\Subkey1]\r\n"
174 "\"Binary\"=hex:11,22,33,44\r\n"
175 "\"Undefined hex\"=hex(100):25,50,41,54,48,25,00\r\n\r\n";
198 run_reg_exe(
"reg export \\\\remote-pc\\HKLM\\Wine file.reg", &
r);
260 "got exit code %d, expected 0\n",
r);
278 add_key(hkey,
"Subkey1", 0, &subkey);
280 add_value(subkey,
"Undefined hex", 0x100,
"%PATH%", 7);
283 add_key(hkey,
"Subkey2a", 0, &subkey);
289 add_key(hkey,
"Subkey2a\\Subkey2b", 0, &subkey);
294 add_key(hkey,
"Subkey3a", 0, &subkey);
295 add_value(subkey,
"Backslash",
REG_SZ,
"Use \\\\ to escape a backslash", 29);
298 add_key(hkey,
"Subkey3a\\Subkey3b\\Subkey3c", 0, &subkey);
303 add_key(hkey,
"Subkey4", 0, &subkey);
306 add_value(subkey,
"43981", 0xabcd,
"Value", 6);
358 "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
359 "\"Wine2a\"=hex(1):\n"
360 "\"Wine2b\"=hex(3):\n"
361 "\"Wine2c\"=hex(4):\n\n", &
r);
375 "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
376 "\"Wine3a\"=hex(1):56,00,61,00,6c,00,75,00,65,00,00,00\n"
377 "\"Wine3b\"=hex(3):12,34,56,78\n"
378 "\"Wine3c\"=hex(4):40,30,20,10\n\n", &
r);
395 "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
396 "\"Wine4a\"=dword:00000005\n"
397 "\"Wine4b\"=hex(1):00,00,00,00,00,00,00,00\n"
398 "\"Wine4c\"=\"Value\"\n"
399 "\"Wine4d\"=hex(1):00,00,61,00,62,00,63,00\n"
400 "\"Wine4e\"=dword:00000100\n"
401 "\"Wine4f\"=hex(1):00,00,56,00,61,00,6c,00,75,00,65,00,00,00\n"
402 "\"Wine4g\"=\"Value2\"\n"
403 "\"Wine4h\"=hex(1):61,00,62,00,63,00,00,00, \\\n"
404 " 64,00,65,00,66,00,00,00\n\n", &
r);
470 add_value(subkey,
"Undefined hex", 0x100,
"%PATH%", 7);
476static void test_registry_view_win32(
void)
482 is_win32 = !
is_wow64 && (
sizeof(
void *) ==
sizeof(
int));
484 if (!is_win32)
return;
515static void test_registry_view_win64(
void)
555static void test_registry_view_wow64(
void)
600 win_skip(
"reg.exe not available, skipping 'export' tests\n");
610 win_skip(
"reg.exe is not running with elevated privileges; "
611 "skipping registry view tests\n");
616 test_registry_view_win32();
617 test_registry_view_win64();
618 test_registry_view_wow64();
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
#define GetCurrentProcess()
#define HeapFree(x, y, z)
#define MultiByteToWideChar
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
static const BOOL is_win64
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
_CRTIMP void __cdecl rewind(_Inout_ FILE *_File)
_Check_return_opt_ _CRTIMP size_t __cdecl fread(_Out_writes_bytes_(_ElementSize *_Count) void *_DstBuf, _In_ size_t _ElementSize, _In_ size_t _Count, _Inout_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
_Check_return_opt_ _CRTIMP int __cdecl fseek(_Inout_ FILE *_File, _In_ long _Offset, _In_ int _Origin)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_Check_return_ _CRTIMP long __cdecl ftell(_Inout_ FILE *_File)
#define memcpy(s1, s2, n)
#define todo_wine_if(is_todo)
const char * empty_hex_test2
const char * hex_types_test
const char * complex_data_test
static void test_export(void)
const char * escaped_null_test
const char * key_order_test
const char * slashes_test
BOOL compare_export_(const char *file, unsigned line, const char *filename, const char *expected, DWORD todo)
const char * embedded_null_test
const char * simple_data_test
const char * registry_view_test
const char * value_order_test
const char * empty_hex_test
const char * empty_key_test
static void test_command_syntax(void)
BOOL is_elevated_process(void)
BOOL delete_file_(const char *file, unsigned line, const char *fname)
#define add_value(k, n, t, d, s)
#define compare_export(f, e, todo)
#define test_import_wstr(c, r)
#define add_key(r, p, s, k)
#define verify_reg(k, v, t, d, s, todo)
#define delete_tree(r, p, s)
#define open_key(r, p, s, k)
#define verify_key_nonexist(r, p, s)
#define run_reg_exe(c, r)
#define delete_key(r, p, s)
static unsigned int file_size
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER