[PATCH 08/13] reg: Import hex data via the state machine

Hugh McMaster hugh.mcmaster at outlook.com
Fri Aug 18 04:30:50 CDT 2017


Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
 programs/reg/import.c    | 179 ++++++++++++++++++-
 programs/reg/tests/reg.c | 448 +++++++++++++++++++++++------------------------
 2 files changed, 401 insertions(+), 226 deletions(-)

diff --git a/programs/reg/import.c b/programs/reg/import.c
index 5c381e752a..efb09e6898 100644
--- a/programs/reg/import.c
+++ b/programs/reg/import.c
@@ -42,6 +42,21 @@ static WCHAR *GetWideString(const char *strA)
     return NULL;
 }
 
+static WCHAR *GetWideStringN(const char *strA, int size, DWORD *len)
+{
+    if (strA)
+    {
+        WCHAR *strW;
+        *len = MultiByteToWideChar(CP_ACP, 0, strA, size, NULL, 0);
+
+        strW = heap_xalloc(*len * sizeof(WCHAR));
+        MultiByteToWideChar(CP_ACP, 0, strA, size, strW, *len);
+        return strW;
+    }
+    *len = 0;
+    return NULL;
+}
+
 static WCHAR *(*get_line)(FILE *);
 
 /* parser definitions */
@@ -57,6 +72,9 @@ enum parser_state
     DATA_TYPE,           /* parsing the registry data type */
     STRING_DATA,         /* parsing REG_SZ data */
     DWORD_DATA,          /* parsing DWORD data */
+    HEX_DATA,            /* parsing REG_BINARY, REG_NONE, REG_EXPAND_SZ or REG_MULTI_SZ data */
+    EOL_BACKSLASH,       /* preparing to parse multiple lines of hex data */
+    HEX_MULTILINE,       /* parsing multiple lines of hex data */
     SET_VALUE,           /* adding a value to the registry */
     NB_PARSER_STATES
 };
@@ -74,6 +92,7 @@ struct parser
     DWORD              data_type;      /* data type */
     void              *data;           /* value data */
     DWORD              data_size;      /* size of the data (in bytes) */
+    BOOL               backslash;      /* TRUE if the current line contains a backslash */
     enum parser_state  state;          /* current parser state */
 };
 
@@ -90,6 +109,9 @@ static WCHAR *data_start_state(struct parser *parser, WCHAR *pos);
 static WCHAR *data_type_state(struct parser *parser, WCHAR *pos);
 static WCHAR *string_data_state(struct parser *parser, WCHAR *pos);
 static WCHAR *dword_data_state(struct parser *parser, WCHAR *pos);
+static WCHAR *hex_data_state(struct parser *parser, WCHAR *pos);
+static WCHAR *eol_backslash_state(struct parser *parser, WCHAR *pos);
+static WCHAR *hex_multiline_state(struct parser *parser, WCHAR *pos);
 static WCHAR *set_value_state(struct parser *parser, WCHAR *pos);
 
 static const parser_state_func parser_funcs[NB_PARSER_STATES] =
@@ -104,6 +126,9 @@ static const parser_state_func parser_funcs[NB_PARSER_STATES] =
     data_type_state,           /* DATA_TYPE */
     string_data_state,         /* STRING_DATA */
     dword_data_state,          /* DWORD_DATA */
+    hex_data_state,            /* HEX_DATA */
+    eol_backslash_state,       /* EOL_BACKSLASH */
+    hex_multiline_state,       /* HEX_MULTILINE */
     set_value_state,           /* SET_VALUE */
 };
 
@@ -146,6 +171,66 @@ error:
     return FALSE;
 }
 
+/******************************************************************************
+ * Converts comma-separated hex data into a binary string and modifies
+ * the input parameter to skip the concatenating backslash, if found.
+ *
+ * Returns TRUE or FALSE to indicate whether parsing was successful.
+ */
+static BOOL convert_hex_csv_to_hex(struct parser *parser, WCHAR **str)
+{
+    size_t size;
+    BYTE *d;
+    WCHAR *s;
+
+    parser->backslash = FALSE;
+
+    /* The worst case is 1 digit + 1 comma per byte */
+    size = ((lstrlenW(*str) + 1) / 2) + parser->data_size;
+    parser->data = heap_xrealloc(parser->data, size);
+
+    s = *str;
+    d = (BYTE *)parser->data + parser->data_size;
+
+    while (*s)
+    {
+        WCHAR *end;
+        unsigned long wc;
+
+        wc = strtoulW(s, &end, 16);
+        if (wc > 0xff) return FALSE;
+
+        if (s == end && wc == 0)
+        {
+            while (*end == ' ' || *end == '\t') end++;
+            if (*end == '\\')
+            {
+                parser->backslash = TRUE;
+                *str = end + 1;
+                return TRUE;
+            }
+            else if (*end == ';')
+                return TRUE;
+            return FALSE;
+        }
+
+        *d++ = wc;
+        parser->data_size++;
+
+        if (*end && *end != ',')
+        {
+            while (*end == ' ' || *end == '\t') end++;
+            if (*end && *end != ';') return FALSE;
+            return TRUE;
+        }
+
+        if (*end) end++;
+        s = end;
+    }
+
+    return TRUE;
+}
+
 /******************************************************************************
  * Parses the data type of the registry value being imported and modifies
  * the input parameter to skip the string representation of the data type.
@@ -305,13 +390,34 @@ static LONG open_key(struct parser *parser, WCHAR *path)
 
 static void free_parser_data(struct parser *parser)
 {
-    if (parser->parse_type == REG_DWORD)
+    if (parser->parse_type == REG_DWORD || parser->parse_type == REG_BINARY)
         heap_free(parser->data);
 
     parser->data = NULL;
     parser->data_size = 0;
 }
 
+static void prepare_hex_string_data(struct parser *parser)
+{
+    if (parser->data_type == REG_EXPAND_SZ || parser->data_type == REG_MULTI_SZ)
+    {
+        BYTE *data = parser->data;
+
+        if (data[parser->data_size - 1] != 0)
+        {
+            data[parser->data_size] = 0;
+            parser->data_size++;
+        }
+
+        if (!parser->is_unicode)
+        {
+            parser->data = GetWideStringN(parser->data, parser->data_size, &parser->data_size);
+            parser->data_size *= sizeof(WCHAR);
+            heap_free(data);
+        }
+    }
+}
+
 enum reg_versions {
     REG_VERSION_31,
     REG_VERSION_40,
@@ -566,6 +672,8 @@ static WCHAR *data_type_state(struct parser *parser, WCHAR *pos)
         set_state(parser, DWORD_DATA);
         break;
     case REG_BINARY: /* all hex data types, including undefined */
+        set_state(parser, HEX_DATA);
+        break;
     default:
         set_state(parser, LINE_START);
     }
@@ -618,6 +726,74 @@ invalid:
     return line;
 }
 
+/* handler for parser HEX_DATA state */
+static WCHAR *hex_data_state(struct parser *parser, WCHAR *pos)
+{
+    WCHAR *line = pos;
+
+    if (!convert_hex_csv_to_hex(parser, &line))
+        goto invalid;
+
+    if (parser->backslash)
+    {
+        set_state(parser, EOL_BACKSLASH);
+        return line;
+    }
+
+    prepare_hex_string_data(parser);
+
+    set_state(parser, SET_VALUE);
+    return line;
+
+invalid:
+    free_parser_data(parser);
+    set_state(parser, LINE_START);
+    return line;
+}
+
+/* handler for parser EOL_BACKSLASH state */
+static WCHAR *eol_backslash_state(struct parser *parser, WCHAR *pos)
+{
+    WCHAR *p = pos;
+
+    while (*p == ' ' || *p == '\t') p++;
+    if (*p && *p != ';') goto invalid;
+
+    set_state(parser, HEX_MULTILINE);
+    return pos;
+
+invalid:
+    free_parser_data(parser);
+    set_state(parser, LINE_START);
+    return p;
+}
+
+/* handler for parser HEX_MULTILINE state */
+static WCHAR *hex_multiline_state(struct parser *parser, WCHAR *pos)
+{
+    WCHAR *line;
+
+    if (!(line = get_line(parser->file)))
+    {
+        prepare_hex_string_data(parser);
+        set_state(parser, SET_VALUE);
+        return pos;
+    }
+
+    while (*line == ' ' || *line == '\t') line++;
+    if (!*line || *line == ';') return line;
+
+    if (!isxdigitW(*line)) goto invalid;
+
+    set_state(parser, HEX_DATA);
+    return line;
+
+invalid:
+    free_parser_data(parser);
+    set_state(parser, LINE_START);
+    return line;
+}
+
 /* handler for parser SET_VALUE state */
 static WCHAR *set_value_state(struct parser *parser, WCHAR *pos)
 {
@@ -779,6 +955,7 @@ int reg_import(const WCHAR *filename)
     parser.data_type     = 0;
     parser.data          = NULL;
     parser.data_size     = 0;
+    parser.backslash     = FALSE;
     parser.state         = HEADER;
 
     pos = parser.two_wchars;
diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c
index 8bae0d021d..991284fd58 100644
--- a/programs/reg/tests/reg.c
+++ b/programs/reg/tests/reg.c
@@ -1042,8 +1042,7 @@ static void test_import(void)
     dword = 0x782;
     verify_reg(hkey, "Wine1", REG_DWORD, &dword, sizeof(dword), 0);
     verify_reg(hkey, "Wine2", REG_SZ, "Test Value", 11, 0);
-    todo_wine verify_reg(hkey, "Wine3", REG_MULTI_SZ, "Line concatenation\0", 20,
-                         TODO_REG_TYPE|TODO_REG_SIZE|TODO_REG_DATA);
+    verify_reg(hkey, "Wine3", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
     verify_reg(hkey, "", REG_SZ, "Test", 5, 0);
     dword = 0x12345678;
     verify_reg(hkey, "Wine4", REG_DWORD, &dword, sizeof(dword), 0);
@@ -1107,7 +1106,7 @@ static void test_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine14");
     verify_reg(hkey, "Wine15", REG_SZ, "A valid line", 13, 0);
-    todo_wine verify_reg(hkey, "Wine16", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine16", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
     verify_reg(hkey, "Wine17", REG_SZ, "Another valid line", 19, 0);
 
     test_import_str("REGEDIT4\n\n"
@@ -1164,7 +1163,7 @@ static void test_import(void)
                     "  63,61,74,\\;comment\n"
                     "  65,6e,61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line1", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line1", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1173,7 +1172,7 @@ static void test_import(void)
                     "  63,61,74,;comment\n"
                     "  65,6e,61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line2", REG_MULTI_SZ, "Line concat", 12, 0);
+    verify_reg(hkey, "Multi-Line2", REG_MULTI_SZ, "Line concat", 12, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1211,7 +1210,7 @@ static void test_import(void)
                     "  63,61,74,\\;comment\n"
                     "  65,6e,61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line7", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line7", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1221,7 +1220,7 @@ static void test_import(void)
                     "  63,61,74,\\;#comment\n"
                     "  65,6e,61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line8", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line8", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1241,7 +1240,7 @@ static void test_import(void)
                     "  65,6e,\\;comment\n\n"
                     "  61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line10", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line10", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1391,12 +1390,12 @@ static void test_import(void)
                     "\"Wine40f\"=\"Value 3\"\n"
                     "\"Wine40g\"=\"Value 4\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine40a", REG_EXPAND_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine40a", REG_EXPAND_SZ, "Line", 5, 0);
     verify_reg(hkey, "Wine40b", REG_SZ, "Value 1", 8, 0);
     verify_reg_nonexist(hkey, "Wine40c");
     verify_reg(hkey, "Wine40d", REG_SZ, "Value 2", 8, 0);
     verify_reg_nonexist(hkey, "Wine40e");
-    todo_wine verify_reg_nonexist(hkey, "Wine40f");
+    verify_reg_nonexist(hkey, "Wine40f");
     verify_reg(hkey, "Wine40g", REG_SZ, "Value 4", 8, 0);
 
     test_import_str("REGEDIT4\n\n"
@@ -1472,16 +1471,16 @@ static void test_import(void)
                     "  6c,00,75,00,\\#comment\n"
                     "  65,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine43a", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
-    todo_wine verify_reg(hkey, "Wine43b", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine43a", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine43b", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
     verify_reg_nonexist(hkey, "Wine43c");
     verify_reg_nonexist(hkey, "Wine43d");
     verify_reg_nonexist(hkey, "Wine43e");
     verify_reg_nonexist(hkey, "Wine43f");
     verify_reg_nonexist(hkey, "Wine43g");
-    todo_wine verify_reg(hkey, "Wine43h", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
-    todo_wine verify_reg(hkey, "Wine43i", REG_NONE, "V\0a\0l\0u", 8, 0);
-    todo_wine verify_reg(hkey, "Wine43j", REG_NONE, "V\0a\0l\0u", 8, 0);
+    verify_reg(hkey, "Wine43h", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine43i", REG_NONE, "V\0a\0l\0u", 8, 0);
+    verify_reg(hkey, "Wine43j", REG_NONE, "V\0a\0l\0u", 8, 0);
     verify_reg_nonexist(hkey, "Wine43k");
 
     test_import_str("REGEDIT4\n\n"
@@ -1512,29 +1511,29 @@ static void test_import(void)
                     "  54,48,\\#comment\n"
                     "  25,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine44a", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine44b", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine44a", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine44b", REG_EXPAND_SZ, "%PATH%", 7, 0);
     verify_reg_nonexist(hkey, "Wine44c");
     verify_reg_nonexist(hkey, "Wine44d");
     verify_reg_nonexist(hkey, "Wine44e");
     verify_reg_nonexist(hkey, "Wine44f");
     verify_reg_nonexist(hkey, "Wine44g");
-    todo_wine verify_reg(hkey, "Wine44h", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine44h", REG_EXPAND_SZ, "%PATH%", 7, 0);
     /* Wine44i */
     size = sizeof(buffer);
     err = RegQueryValueExA(hkey, "Wine44i", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
-    todo_wine ok(size == 6 || broken(size == 5) /* WinXP */, "got wrong size %u, expected 6\n", size);
-    todo_wine ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
+    ok(size == 6 || broken(size == 5) /* WinXP */, "got wrong size %u, expected 6\n", size);
+    ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
     /* Wine44j */
     size = sizeof(buffer);
     memset(buffer, '-', size);
     err = RegQueryValueExA(hkey, "Wine44j", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
-    todo_wine ok(size == 6 || broken(size == 5) /* WinXP */, "got wrong size %u, expected 6\n", size);
-    todo_wine ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
+    ok(size == 6 || broken(size == 5) /* WinXP */, "got wrong size %u, expected 6\n", size);
+    ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
     /* Wine44k */
     verify_reg_nonexist(hkey, "Wine44k");
 
@@ -1568,16 +1567,16 @@ static void test_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     hex[0] = 0x11; hex[1] = 0x22; hex[2] = 0x33; hex[3] = 0x44;
     hex[4] = 0x55; hex[5] = 0x66; hex[6] = 0x77; hex[7] = 0x88;
-    todo_wine verify_reg(hkey, "Wine45a", REG_BINARY, hex, sizeof(hex), 0);
-    todo_wine verify_reg(hkey, "Wine45b", REG_BINARY, hex, sizeof(hex), 0);
+    verify_reg(hkey, "Wine45a", REG_BINARY, hex, sizeof(hex), 0);
+    verify_reg(hkey, "Wine45b", REG_BINARY, hex, sizeof(hex), 0);
     verify_reg_nonexist(hkey, "Wine45c");
     verify_reg_nonexist(hkey, "Wine45d");
     verify_reg_nonexist(hkey, "Wine45e");
     verify_reg_nonexist(hkey, "Wine45f");
     verify_reg_nonexist(hkey, "Wine45g");
-    todo_wine verify_reg(hkey, "Wine45h", REG_BINARY, hex, sizeof(hex), 0);
-    todo_wine verify_reg(hkey, "Wine45i", REG_BINARY, hex, 6, 0);
-    todo_wine verify_reg(hkey, "Wine45j", REG_BINARY, hex, 6, 0);
+    verify_reg(hkey, "Wine45h", REG_BINARY, hex, sizeof(hex), 0);
+    verify_reg(hkey, "Wine45i", REG_BINARY, hex, 6, 0);
+    verify_reg(hkey, "Wine45j", REG_BINARY, hex, 6, 0);
     verify_reg_nonexist(hkey, "Wine45k");
 
     /* Test import with subkeys */
@@ -1745,10 +1744,10 @@ static void test_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg(hkey, "Wine46a", REG_SZ, "Test Value", 11, 0);
     verify_reg(hkey, "Wine46b", REG_DWORD, &dword, sizeof(dword), 0);
-    todo_wine verify_reg(hkey, "Wine46c", REG_BINARY, hex, 4, 0);
-    todo_wine verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    todo_wine verify_reg(hkey, "Wine46e", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine46c", REG_BINARY, hex, 4, 0);
+    verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine46e", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1761,10 +1760,10 @@ static void test_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     todo_wine verify_reg_nonexist(hkey, "Wine46a");
     todo_wine verify_reg_nonexist(hkey, "Wine46b");
-    verify_reg_nonexist(hkey, "Wine46c");
-    todo_wine verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    verify_reg_nonexist(hkey, "Wine46e");
-    todo_wine verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    todo_wine verify_reg_nonexist(hkey, "Wine46c");
+    verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    todo_wine verify_reg_nonexist(hkey, "Wine46e");
+    verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
 
     /* Test the accepted range of the hex-based data types */
     test_import_str("REGEDIT4\n\n"
@@ -1782,14 +1781,14 @@ static void test_import(void)
                     "\"Wine47k\"=hex(0X2):56,61,6c,75,65,00\n"
                     "\"Wine47l\"=hex(x2):56,61,6c,75,65,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine47a", REG_NONE, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47b", 0x10, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47c", 0x100, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47d", 0x1000, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47e", 0x7fff, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47f", 0xffff, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47g", 0x7fffffff, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47h", 0xffffffff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47a", REG_NONE, "Value", 6, 0);
+    verify_reg(hkey, "Wine47b", 0x10, "Value", 6, 0);
+    verify_reg(hkey, "Wine47c", 0x100, "Value", 6, 0);
+    verify_reg(hkey, "Wine47d", 0x1000, "Value", 6, 0);
+    verify_reg(hkey, "Wine47e", 0x7fff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47f", 0xffff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47g", 0x7fffffff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47h", 0xffffffff, "Value", 6, 0);
     verify_reg_nonexist(hkey, "Wine47i");
     verify_reg_nonexist(hkey, "Wine47j");
     verify_reg_nonexist(hkey, "Wine47k");
@@ -1802,14 +1801,14 @@ static void test_import(void)
                     "\"Wine48b\"=hex(7):4c,69,6e,65,20,\t\\\n"
                     "  63,6f,6e,63,61,74,65,6e,61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine48a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    todo_wine verify_reg(hkey, "Wine48b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine48a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine48b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                     "\"Wine49\"=hex(2):25,50,41,54,48,25,00,\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine49", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine49", REG_EXPAND_SZ, "%PATH%", 7, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1818,8 +1817,8 @@ static void test_import(void)
                     "\"Wine50c\"=hex(2):25,50,41,54,48,25,00  #comment\n"
                     "\"Wine50d\"=hex(2):25,50,41,54,48,25,00\t#comment\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine50a", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine50b", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine50a", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine50b", REG_EXPAND_SZ, "%PATH%", 7, 0);
     verify_reg_nonexist(hkey, "Wine50c");
     verify_reg_nonexist(hkey, "Wine50d");
 
@@ -1863,7 +1862,7 @@ static void test_import(void)
     verify_reg_nonexist(hkey, "Wine52i");
     verify_reg_nonexist(hkey, "Wine52j");
     verify_reg_nonexist(hkey, "Wine52k");
-    todo_wine verify_reg(hkey, "Wine52l", REG_EXPAND_SZ, "%HOME%", 7, 0);
+    verify_reg(hkey, "Wine52l", REG_EXPAND_SZ, "%HOME%", 7, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1880,11 +1879,11 @@ static void test_import(void)
                     "\"Wine53f\"=hex(2):25,48,4f,4d,45,25,5c\\\t  ;comment\n"
                     "  25,50,41,54,48,25,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine53a", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
+    verify_reg(hkey, "Wine53a", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
     verify_reg_nonexist(hkey, "Wine53b");
-    todo_wine verify_reg(hkey, "Wine53c", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
+    verify_reg(hkey, "Wine53c", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
     verify_reg_nonexist(hkey, "Wine53d");
-    todo_wine verify_reg(hkey, "Wine53e", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
+    verify_reg(hkey, "Wine53e", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
     verify_reg_nonexist(hkey, "Wine53f");
 
     test_import_str("REGEDIT4\n\n"
@@ -1893,7 +1892,7 @@ static void test_import(void)
                     "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey1]\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine54a");
-    todo_wine verify_key_nonexist(hkey, "Subkey1");
+    verify_key_nonexist(hkey, "Subkey1");
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -1926,13 +1925,13 @@ static void test_import(void)
                     "\"Wine55j\"=\"Test value\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine55a");
-    todo_wine verify_reg_nonexist(hkey, "Wine55b");
+    verify_reg_nonexist(hkey, "Wine55b");
     verify_reg_nonexist(hkey, "Wine55c");
-    todo_wine verify_reg_nonexist(hkey, "Wine55d");
+    verify_reg_nonexist(hkey, "Wine55d");
     verify_reg_nonexist(hkey, "Wine55e");
     verify_reg(hkey, "Wine55f", REG_SZ, "Test value", 11, 0);
     verify_reg_nonexist(hkey, "Wine55g");
-    todo_wine verify_reg_nonexist(hkey, "Wine55h");
+    verify_reg_nonexist(hkey, "Wine55h");
     verify_reg_nonexist(hkey, "Wine55i");
     verify_reg(hkey, "Wine55j", REG_SZ, "Test value", 11, 0);
 
@@ -1956,13 +1955,13 @@ static void test_import(void)
                     "\"Wine56j\"=dword:00000008\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine56a");
-    todo_wine verify_reg_nonexist(hkey, "Wine56b");
+    verify_reg_nonexist(hkey, "Wine56b");
     verify_reg_nonexist(hkey, "Wine56c");
-    todo_wine verify_reg_nonexist(hkey, "Wine56d");
+    verify_reg_nonexist(hkey, "Wine56d");
     verify_reg_nonexist(hkey, "Wine56e");
     verify_reg(hkey, "Wine56f", REG_DWORD, &dword, sizeof(dword), 0);
     verify_reg_nonexist(hkey, "Wine56g");
-    todo_wine verify_reg_nonexist(hkey, "Wine56h");
+    verify_reg_nonexist(hkey, "Wine56h");
     verify_reg_nonexist(hkey, "Wine56i");
     verify_reg(hkey, "Wine56j", REG_DWORD, &dword, sizeof(dword), 0);
 
@@ -1990,11 +1989,11 @@ static void test_import(void)
     verify_reg_nonexist(hkey, "Wine57c");
     verify_reg_nonexist(hkey, "Wine57d");
     verify_reg_nonexist(hkey, "Wine57e");
-    todo_wine verify_reg(hkey, "Wine57f", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine57f", REG_EXPAND_SZ, "%PATH%", 7, 0);
     verify_reg_nonexist(hkey, "Wine57g");
     verify_reg_nonexist(hkey, "Wine57h");
     verify_reg_nonexist(hkey, "Wine57i");
-    todo_wine verify_reg(hkey, "Wine57j", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine57j", REG_EXPAND_SZ, "%PATH%", 7, 0);
 
     err = RegDeleteValueW(hkey, NULL);
     ok(err == ERROR_SUCCESS, "RegDeleteValue failed: %u\n", err);
@@ -2005,7 +2004,7 @@ static void test_import(void)
                     "@=\"Default value 1\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine58a");
-    todo_wine verify_reg_nonexist(hkey, NULL);
+    verify_reg_nonexist(hkey, NULL);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2014,7 +2013,7 @@ static void test_import(void)
                     "@=\"Default value 2\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine58b");
-    todo_wine verify_reg_nonexist(hkey, NULL);
+    verify_reg_nonexist(hkey, NULL);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2034,7 +2033,7 @@ static void test_import(void)
                     "@=\"Default value 4\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine58d");
-    todo_wine verify_reg_nonexist(hkey, NULL);
+    verify_reg_nonexist(hkey, NULL);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2064,7 +2063,7 @@ static void test_import(void)
                     "  65,6e,\\;comment\n"
                     "  61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2074,7 +2073,7 @@ static void test_import(void)
                     "  65,6e,\\;comment\n"
                     "  61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2104,7 +2103,7 @@ static void test_import(void)
                     "  65,6e,\\\n\n\n\n"
                     "  61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60e", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60e", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2114,7 +2113,7 @@ static void test_import(void)
                     "  65,6e,\\\n\t \t\n\t \t\n\t \t\n"
                     "  61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60f", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60f", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2131,50 +2130,50 @@ static void test_import(void)
                     "\"Wine62a\"=hex(0):56,61,6c,75,65,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62a", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62a", REG_NONE, "Value", 5, 0);
+        verify_reg(hkey, "Wine62a", REG_NONE, "Value", 5, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                     "\"Wine62b\"=hex(2):25,50,41,54,48,25,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62b", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62b", REG_EXPAND_SZ, "%PATH%", 7, 0);
+        verify_reg(hkey, "Wine62b", REG_EXPAND_SZ, "%PATH%", 7, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                     "\"Wine62c\"=hex:11,22,33,44,55,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62c", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62c", REG_BINARY, hex, 5, 0);
+        verify_reg(hkey, "Wine62c", REG_BINARY, hex, 5, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                     "\"Wine62d\"=hex(7):4c,69,6e,65,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62d", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62d", REG_MULTI_SZ, "Line", 5, 0);
+        verify_reg(hkey, "Wine62d", REG_MULTI_SZ, "Line", 5, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                     "\"Wine62e\"=hex(100):56,61,6c,75,65,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62e", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62e", 0x100, "Value", 5, 0);
+        verify_reg(hkey, "Wine62e", 0x100, "Value", 5, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2207,23 +2206,23 @@ static void test_import(void)
                     "  63,6f,6e,63,61,74,;comment\n"
                     "  65,6e,61,74,69,6f,6e,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine64a", REG_MULTI_SZ, "Line\0", 6, 0);
-    todo_wine verify_reg(hkey, "Wine64b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    todo_wine verify_reg(hkey, "Wine64c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine64a", REG_MULTI_SZ, "Line\0", 6, 0);
+    verify_reg(hkey, "Wine64b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine64c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
     /* Wine64d */
     size = sizeof(buffer);
     err = RegQueryValueExA(hkey, "Wine64d", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
-    todo_wine ok(size == 12 || broken(size == 11) /* WinXP */, "got wrong size %u, expected 12\n", size);
-    todo_wine ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
+    ok(size == 12 || broken(size == 11) /* WinXP */, "got wrong size %u, expected 12\n", size);
+    ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
     /* Wine64e */
     size = sizeof(buffer);
     err = RegQueryValueExA(hkey, "Wine64e", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
-    todo_wine ok(size == 12 || broken(size == 11) /* WinXP */, "got wrong size %u, expected 12\n", size);
-    todo_wine ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
+    ok(size == 12 || broken(size == 11) /* WinXP */, "got wrong size %u, expected 12\n", size);
+    ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2240,11 +2239,11 @@ static void test_import(void)
                     "  54,48,;comment\n"
                     "  25,00\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine65a", 0x100, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine65b", 0x100, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine65c", 0x100, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine65d", 0x100, "%PATH", 5, 0);
-    todo_wine verify_reg(hkey, "Wine65e", 0x100, "%PATH", 5, 0);
+    verify_reg(hkey, "Wine65a", 0x100, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine65b", 0x100, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine65c", 0x100, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine65d", 0x100, "%PATH", 5, 0);
+    verify_reg(hkey, "Wine65e", 0x100, "%PATH", 5, 0);
 
     /* Test null-termination of REG_EXPAND_SZ and REG_MULTI_SZ data*/
     test_import_str("REGEDIT4\n\n"
@@ -2256,12 +2255,12 @@ static void test_import(void)
                     "\"Wine66e\"=hex(7):4c,69,6e,65,00,00\n"
                     "\"Wine66f\"=hex(7):4c,69,6e,65,00,00,\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine66a", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66b", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66c", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66d", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66e", REG_MULTI_SZ, "Line\0", 6, 0);
-    todo_wine verify_reg(hkey, "Wine66f", REG_MULTI_SZ, "Line\0", 6, 0);
+    verify_reg(hkey, "Wine66a", REG_MULTI_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine66b", REG_MULTI_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine66c", REG_MULTI_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine66d", REG_MULTI_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine66e", REG_MULTI_SZ, "Line\0", 6, 0);
+    verify_reg(hkey, "Wine66f", REG_MULTI_SZ, "Line\0", 6, 0);
 
     test_import_str("REGEDIT4\n\n"
                     "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2270,10 +2269,10 @@ static void test_import(void)
                     "\"Wine67c\"=hex(2):25,50,41,54,48,25,00\n"
                     "\"Wine67d\"=hex(2):25,50,41,54,48,25,00,\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine67a", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine67b", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine67c", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine67d", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine67a", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine67b", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine67c", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine67d", REG_EXPAND_SZ, "%PATH%", 7, 0);
 
     err = RegCloseKey(hkey);
     ok(err == ERROR_SUCCESS, "got %d, expected 0\n", err);
@@ -2499,8 +2498,7 @@ static void test_unicode_import(void)
     dword = 0x782;
     verify_reg(hkey, "Wine1", REG_DWORD, &dword, sizeof(dword), 0);
     verify_reg(hkey, "Wine2", REG_SZ, "Test Value", 11, 0);
-    todo_wine verify_reg(hkey, "Wine3", REG_MULTI_SZ, "Line concatenation\0", 20,
-                         TODO_REG_TYPE|TODO_REG_SIZE|TODO_REG_DATA);
+    verify_reg(hkey, "Wine3", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
     verify_reg(hkey, "", REG_SZ, "Test", 5, 0);
     dword = 0x12345678;
     verify_reg(hkey, "Wine4", REG_DWORD, &dword, sizeof(dword), 0);
@@ -2564,7 +2562,7 @@ static void test_unicode_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine14");
     verify_reg(hkey, "Wine15", REG_SZ, "A valid line", 13, 0);
-    todo_wine verify_reg(hkey, "Wine16", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine16", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
     verify_reg(hkey, "Wine17", REG_SZ, "Another valid line", 19, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
@@ -2762,12 +2760,12 @@ static void test_unicode_import(void)
                      "\"Wine40f\"=\"Value 3\"\n"
                      "\"Wine40g\"=\"Value 4\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine40a", REG_EXPAND_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine40a", REG_EXPAND_SZ, "Line", 5, 0);
     verify_reg(hkey, "Wine40b", REG_SZ, "Value 1", 8, 0);
     verify_reg_nonexist(hkey, "Wine40c");
     verify_reg(hkey, "Wine40d", REG_SZ, "Value 2", 8, 0);
     verify_reg_nonexist(hkey, "Wine40e");
-    todo_wine verify_reg_nonexist(hkey, "Wine40f");
+    verify_reg_nonexist(hkey, "Wine40f");
     verify_reg(hkey, "Wine40g", REG_SZ, "Value 4", 8, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
@@ -2777,7 +2775,7 @@ static void test_unicode_import(void)
                      "  63,00,61,00,74,00,\\;comment\n"
                      "  65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line1", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line1", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2786,7 +2784,7 @@ static void test_unicode_import(void)
                      "  63,00,61,00,74,00,;comment\n"
                      "  65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line2", REG_MULTI_SZ, "Line concat", 12, 0);
+    verify_reg(hkey, "Multi-Line2", REG_MULTI_SZ, "Line concat", 12, TODO_REG_SIZE);
 
     test_import_wstr("\xef\xbb\xbfREGEDIT4\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2824,7 +2822,7 @@ static void test_unicode_import(void)
                      "  63,00,61,00,74,00,\\;comment\n"
                      "  65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line7", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line7", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2834,7 +2832,7 @@ static void test_unicode_import(void)
                      "  63,00,61,00,74,00,\\;#comment\n"
                      "  65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line8", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line8", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2854,7 +2852,7 @@ static void test_unicode_import(void)
                      "  65,00,6e,00,\\;comment\n\n"
                      "  61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Multi-Line10", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Multi-Line10", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -2880,7 +2878,7 @@ static void test_unicode_import(void)
                      "[HKEY_CURRENT_USER\\" KEY_BASE "\\\n"
                      "Subkey1]\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_key_nonexist(hkey, "Subkey1");
+    verify_key_nonexist(hkey, "Subkey1");
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "\n"
@@ -2929,16 +2927,16 @@ static void test_unicode_import(void)
                      "  6c,00,75,00,\\#comment\n"
                      "  65,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine43a", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
-    todo_wine verify_reg(hkey, "Wine43b", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine43a", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine43b", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
     verify_reg_nonexist(hkey, "Wine43c");
     verify_reg_nonexist(hkey, "Wine43d");
     verify_reg_nonexist(hkey, "Wine43e");
     verify_reg_nonexist(hkey, "Wine43f");
     verify_reg_nonexist(hkey, "Wine43g");
-    todo_wine verify_reg(hkey, "Wine43h", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
-    todo_wine verify_reg(hkey, "Wine43i", REG_NONE, "V\0a\0l\0u", 8, 0);
-    todo_wine verify_reg(hkey, "Wine43j", REG_NONE, "V\0a\0l\0u", 8, 0);
+    verify_reg(hkey, "Wine43h", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine43i", REG_NONE, "V\0a\0l\0u", 8, 0);
+    verify_reg(hkey, "Wine43j", REG_NONE, "V\0a\0l\0u", 8, 0);
     verify_reg_nonexist(hkey, "Wine43k");
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
@@ -2969,29 +2967,29 @@ static void test_unicode_import(void)
                      "  54,00,48,00,\\#comment\n"
                      "  25,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine44a", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine44b", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine44a", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine44b", REG_EXPAND_SZ, "%PATH%", 7, 0);
     verify_reg_nonexist(hkey, "Wine44c");
     verify_reg_nonexist(hkey, "Wine44d");
     verify_reg_nonexist(hkey, "Wine44e");
     verify_reg_nonexist(hkey, "Wine44f");
     verify_reg_nonexist(hkey, "Wine44g");
-    todo_wine verify_reg(hkey, "Wine44h", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine44h", REG_EXPAND_SZ, "%PATH%", 7, 0);
     /* Wine44i */
     size = sizeof(buffer);
     err = RegQueryValueExA(hkey, "Wine44i", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
     todo_wine ok(size == 6 || broken(size == 5) /* WinXP */, "got wrong size %u, expected 6\n", size);
-    todo_wine ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
+    ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
     /* Wine44j */
     size = sizeof(buffer);
     memset(buffer, '-', size);
     err = RegQueryValueExA(hkey, "Wine44j", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_EXPAND_SZ, "got wrong type %u, expected %u\n", type, REG_EXPAND_SZ);
     todo_wine ok(size == 6 || broken(size == 5) /* WinXP */, "got wrong size %u, expected 6\n", size);
-    todo_wine ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
+    ok(memcmp(buffer, "%PATH", size) == 0, "got wrong data\n");
     /* Wine44k */
     verify_reg_nonexist(hkey, "Wine44k");
 
@@ -3025,16 +3023,16 @@ static void test_unicode_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     hex[0] = 0x11; hex[1] = 0x22; hex[2] = 0x33; hex[3] = 0x44;
     hex[4] = 0x55; hex[5] = 0x66; hex[6] = 0x77; hex[7] = 0x88;
-    todo_wine verify_reg(hkey, "Wine45a", REG_BINARY, hex, sizeof(hex), 0);
-    todo_wine verify_reg(hkey, "Wine45b", REG_BINARY, hex, sizeof(hex), 0);
+    verify_reg(hkey, "Wine45a", REG_BINARY, hex, sizeof(hex), 0);
+    verify_reg(hkey, "Wine45b", REG_BINARY, hex, sizeof(hex), 0);
     verify_reg_nonexist(hkey, "Wine45c");
     verify_reg_nonexist(hkey, "Wine45d");
     verify_reg_nonexist(hkey, "Wine45e");
     verify_reg_nonexist(hkey, "Wine45f");
     verify_reg_nonexist(hkey, "Wine45g");
-    todo_wine verify_reg(hkey, "Wine45h", REG_BINARY, hex, sizeof(hex), 0);
-    todo_wine verify_reg(hkey, "Wine45i", REG_BINARY, hex, 6, 0);
-    todo_wine verify_reg(hkey, "Wine45j", REG_BINARY, hex, 6, 0);
+    verify_reg(hkey, "Wine45h", REG_BINARY, hex, sizeof(hex), 0);
+    verify_reg(hkey, "Wine45i", REG_BINARY, hex, 6, 0);
+    verify_reg(hkey, "Wine45j", REG_BINARY, hex, 6, 0);
     verify_reg_nonexist(hkey, "Wine45k");
 
     /* Test import with subkeys */
@@ -3203,10 +3201,10 @@ static void test_unicode_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg(hkey, "Wine46a", REG_SZ, "Test Value", 11, 0);
     verify_reg(hkey, "Wine46b", REG_DWORD, &dword, sizeof(dword), 0);
-    todo_wine verify_reg(hkey, "Wine46c", REG_BINARY, hex, 4, 0);
-    todo_wine verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    todo_wine verify_reg(hkey, "Wine46e", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    verify_reg(hkey, "Wine46c", REG_BINARY, hex, 4, 0);
+    verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine46e", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3219,10 +3217,10 @@ static void test_unicode_import(void)
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     todo_wine verify_reg_nonexist(hkey, "Wine46a");
     todo_wine verify_reg_nonexist(hkey, "Wine46b");
-    verify_reg_nonexist(hkey, "Wine46c");
-    todo_wine verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    verify_reg_nonexist(hkey, "Wine46e");
-    todo_wine verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
+    todo_wine verify_reg_nonexist(hkey, "Wine46c");
+    verify_reg(hkey, "Wine46d", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    todo_wine verify_reg_nonexist(hkey, "Wine46e");
+    verify_reg(hkey, "Wine46f", REG_NONE, "V\0a\0l\0u\0e\0\0", 12, 0);
 
     /* Test the accepted range of the hex-based data types */
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
@@ -3240,14 +3238,14 @@ static void test_unicode_import(void)
                      "\"Wine47k\"=hex(0X2):56,00,61,00,6c,00,75,00,65,00,00,00\n"
                      "\"Wine47l\"=hex(x2):56,00,61,00,6c,00,75,00,65,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine47a", REG_NONE, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47b", 0x10, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47c", 0x100, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47d", 0x1000, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47e", 0x7fff, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47f", 0xffff, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47g", 0x7fffffff, "Value", 6, 0);
-    todo_wine verify_reg(hkey, "Wine47h", 0xffffffff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47a", REG_NONE, "Value", 6, 0);
+    verify_reg(hkey, "Wine47b", 0x10, "Value", 6, 0);
+    verify_reg(hkey, "Wine47c", 0x100, "Value", 6, 0);
+    verify_reg(hkey, "Wine47d", 0x1000, "Value", 6, 0);
+    verify_reg(hkey, "Wine47e", 0x7fff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47f", 0xffff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47g", 0x7fffffff, "Value", 6, 0);
+    verify_reg(hkey, "Wine47h", 0xffffffff, "Value", 6, 0);
     verify_reg_nonexist(hkey, "Wine47i");
     verify_reg_nonexist(hkey, "Wine47j");
     verify_reg_nonexist(hkey, "Wine47k");
@@ -3262,14 +3260,14 @@ static void test_unicode_import(void)
                      "  63,00,6f,00,6e,00,63,00,61,00,74,00,\t  \t  \\\n"
                      "  65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine48a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    todo_wine verify_reg(hkey, "Wine48b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine48a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine48b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                      "\"Wine49\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00,\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine49", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine49", REG_EXPAND_SZ, "%PATH%", 7, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3278,8 +3276,8 @@ static void test_unicode_import(void)
                      "\"Wine50c\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00  #comment\n"
                      "\"Wine50d\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00\t#comment\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine50a", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine50b", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine50a", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine50b", REG_EXPAND_SZ, "%PATH%", 7, 0);
     verify_reg_nonexist(hkey, "Wine50c");
     verify_reg_nonexist(hkey, "Wine50d");
 
@@ -3323,7 +3321,7 @@ static void test_unicode_import(void)
     verify_reg_nonexist(hkey, "Wine52i");
     verify_reg_nonexist(hkey, "Wine52j");
     verify_reg_nonexist(hkey, "Wine52k");
-    todo_wine verify_reg(hkey, "Wine52l", REG_EXPAND_SZ, "%HOME%", 7, 0);
+    verify_reg(hkey, "Wine52l", REG_EXPAND_SZ, "%HOME%", 7, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3340,11 +3338,11 @@ static void test_unicode_import(void)
                      "\"Wine53f\"=hex(2):25,00,48,00,4f,00,4d,00,45,00,25,00,5c,00\\\t  ;comment\n"
                      "  25,00,50,00,41,00,54,00,48,00,25,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine53a", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
+    verify_reg(hkey, "Wine53a", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
     verify_reg_nonexist(hkey, "Wine53b");
-    todo_wine verify_reg(hkey, "Wine53c", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
+    verify_reg(hkey, "Wine53c", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
     verify_reg_nonexist(hkey, "Wine53d");
-    todo_wine verify_reg(hkey, "Wine53e", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
+    verify_reg(hkey, "Wine53e", REG_EXPAND_SZ, "%HOME%\\%PATH%", 14, 0);
     verify_reg_nonexist(hkey, "Wine53f");
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
@@ -3353,7 +3351,7 @@ static void test_unicode_import(void)
                      "[HKEY_CURRENT_USER\\" KEY_BASE "\\Subkey1]\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine54a");
-    todo_wine verify_key_nonexist(hkey, "Subkey1");
+    verify_key_nonexist(hkey, "Subkey1");
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3386,13 +3384,13 @@ static void test_unicode_import(void)
                      "\"Wine55j\"=\"Test value\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine55a");
-    todo_wine verify_reg_nonexist(hkey, "Wine55b");
+    verify_reg_nonexist(hkey, "Wine55b");
     verify_reg_nonexist(hkey, "Wine55c");
-    todo_wine verify_reg_nonexist(hkey, "Wine55d");
+    verify_reg_nonexist(hkey, "Wine55d");
     verify_reg_nonexist(hkey, "Wine55e");
     verify_reg(hkey, "Wine55f", REG_SZ, "Test value", 11, 0);
     verify_reg_nonexist(hkey, "Wine55g");
-    todo_wine verify_reg_nonexist(hkey, "Wine55h");
+    verify_reg_nonexist(hkey, "Wine55h");
     verify_reg_nonexist(hkey, "Wine55i");
     verify_reg(hkey, "Wine55j", REG_SZ, "Test value", 11, 0);
 
@@ -3416,13 +3414,13 @@ static void test_unicode_import(void)
                      "\"Wine56j\"=dword:00000008\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine56a");
-    todo_wine verify_reg_nonexist(hkey, "Wine56b");
+    verify_reg_nonexist(hkey, "Wine56b");
     verify_reg_nonexist(hkey, "Wine56c");
-    todo_wine verify_reg_nonexist(hkey, "Wine56d");
+    verify_reg_nonexist(hkey, "Wine56d");
     verify_reg_nonexist(hkey, "Wine56e");
     verify_reg(hkey, "Wine56f", REG_DWORD, &dword, sizeof(dword), 0);
     verify_reg_nonexist(hkey, "Wine56g");
-    todo_wine verify_reg_nonexist(hkey, "Wine56h");
+    verify_reg_nonexist(hkey, "Wine56h");
     verify_reg_nonexist(hkey, "Wine56i");
     verify_reg(hkey, "Wine56j", REG_DWORD, &dword, sizeof(dword), 0);
 
@@ -3450,11 +3448,11 @@ static void test_unicode_import(void)
     verify_reg_nonexist(hkey, "Wine57c");
     verify_reg_nonexist(hkey, "Wine57d");
     verify_reg_nonexist(hkey, "Wine57e");
-    todo_wine verify_reg(hkey, "Wine57f", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine57f", REG_EXPAND_SZ, "%PATH%", 7, 0);
     verify_reg_nonexist(hkey, "Wine57g");
     verify_reg_nonexist(hkey, "Wine57h");
     verify_reg_nonexist(hkey, "Wine57i");
-    todo_wine verify_reg(hkey, "Wine57j", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine57j", REG_EXPAND_SZ, "%PATH%", 7, 0);
 
     err = RegDeleteValueW(hkey, NULL);
     ok(err == ERROR_SUCCESS, "RegDeleteValue failed: %u\n", err);
@@ -3465,7 +3463,7 @@ static void test_unicode_import(void)
                      "@=\"Default value 1\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine58a");
-    todo_wine verify_reg_nonexist(hkey, NULL);
+    verify_reg_nonexist(hkey, NULL);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3474,7 +3472,7 @@ static void test_unicode_import(void)
                      "@=\"Default value 2\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine58b");
-    todo_wine verify_reg_nonexist(hkey, NULL);
+    verify_reg_nonexist(hkey, NULL);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3494,7 +3492,7 @@ static void test_unicode_import(void)
                      "@=\"Default value 4\"\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     verify_reg_nonexist(hkey, "Wine58d");
-    todo_wine verify_reg_nonexist(hkey, NULL);
+    verify_reg_nonexist(hkey, NULL);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3524,7 +3522,7 @@ static void test_unicode_import(void)
                      "  65,00,6e,00,\\;comment\n"
                      "  61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60a", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3534,7 +3532,7 @@ static void test_unicode_import(void)
                      "  65,00,6e,00,\\;comment\n"
                      "  61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3564,7 +3562,7 @@ static void test_unicode_import(void)
                      "  65,00,6e,00,\\\n\n\n\n"
                      "  61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60e", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60e", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3574,7 +3572,7 @@ static void test_unicode_import(void)
                      "  65,00,6e,00,\\\n\t \t\n\t \t\n\t \t\n"
                      "  61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine60f", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine60f", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3591,50 +3589,50 @@ static void test_unicode_import(void)
                      "\"Wine62a\"=hex(0):56,61,6c,75,65,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62a", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62a", REG_NONE, "Value", 5, 0);
+        verify_reg(hkey, "Wine62a", REG_NONE, "Value", 5, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                      "\"Wine62b\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62b", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62b", REG_EXPAND_SZ, "%PATH%", 7, 0);
+        verify_reg(hkey, "Wine62b", REG_EXPAND_SZ, "%PATH%", 7, TODO_REG_SIZE);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                      "\"Wine62c\"=hex:11,22,33,44,55,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62c", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62c", REG_BINARY, hex, 5, 0);
+        verify_reg(hkey, "Wine62c", REG_BINARY, hex, 5, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                      "\"Wine62d\"=hex(7):4c,00,69,00,6e,00,65,00,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62d", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62d", REG_MULTI_SZ, "Line", 5, 0);
+        verify_reg(hkey, "Wine62d", REG_MULTI_SZ, "Line", 5, TODO_REG_SIZE);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
                      "\"Wine62e\"=hex(100):56,61,6c,75,65,\\", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
     err = RegQueryValueExA(hkey, "Wine62e", NULL, NULL, NULL, NULL);
-    todo_wine ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
-                 "got %u, expected 0\n", err);
+    ok(err == ERROR_SUCCESS || broken(err == ERROR_FILE_NOT_FOUND) /* WinXP */,
+       "got %u, expected 0\n", err);
     if (err == ERROR_SUCCESS)
-        todo_wine verify_reg(hkey, "Wine62e", 0x100, "Value", 5, 0);
+        verify_reg(hkey, "Wine62e", 0x100, "Value", 5, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3674,23 +3672,23 @@ static void test_unicode_import(void)
                      "  63,00,6f,00,6e,00,63,00,61,00,74,00,;comment\n"
                      "  65,00,6e,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine64a", REG_MULTI_SZ, "Line\0", 6, 0);
-    todo_wine verify_reg(hkey, "Wine64b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
-    todo_wine verify_reg(hkey, "Wine64c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine64a", REG_MULTI_SZ, "Line\0", 6, 0);
+    verify_reg(hkey, "Wine64b", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine64c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
     /* Wine64d */
     size = sizeof(buffer);
     err = RegQueryValueExA(hkey, "Wine64d", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
     todo_wine ok(size == 12 || broken(size == 11) /* WinXP */, "got wrong size %u, expected 12\n", size);
-    todo_wine ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
+    ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
     /* Wine64e */
     size = sizeof(buffer);
     err = RegQueryValueExA(hkey, "Wine64e", NULL, &type, (BYTE *)&buffer, &size);
-    todo_wine ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
-    todo_wine ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
+    ok(err == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", err);
+    ok(type == REG_MULTI_SZ, "got wrong type %u, expected %u\n", type, REG_MULTI_SZ);
     todo_wine ok(size == 12 || broken(size == 11) /* WinXP */, "got wrong size %u, expected 12\n", size);
-    todo_wine ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
+    ok(memcmp(buffer, "Line concat", size) == 0, "got wrong data\n");
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3707,11 +3705,11 @@ static void test_unicode_import(void)
                      "  54,48,;comment\n"
                      "  25,00\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine65a", 0x100, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine65b", 0x100, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine65c", 0x100, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine65d", 0x100, "%PATH", 5, 0);
-    todo_wine verify_reg(hkey, "Wine65e", 0x100, "%PATH", 5, 0);
+    verify_reg(hkey, "Wine65a", 0x100, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine65b", 0x100, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine65c", 0x100, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine65d", 0x100, "%PATH", 5, 0);
+    verify_reg(hkey, "Wine65e", 0x100, "%PATH", 5, 0);
 
     /* Test null-termination of REG_EXPAND_SZ and REG_MULTI_SZ data*/
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
@@ -3723,12 +3721,12 @@ static void test_unicode_import(void)
                      "\"Wine66e\"=hex(7):4c,00,69,00,6e,00,65,00,00,00,00,00\n"
                      "\"Wine66f\"=hex(7):4c,00,69,00,6e,00,65,00,00,00,00,00,\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine66a", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66b", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66c", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66d", REG_MULTI_SZ, "Line", 5, 0);
-    todo_wine verify_reg(hkey, "Wine66e", REG_MULTI_SZ, "Line\0", 6, 0);
-    todo_wine verify_reg(hkey, "Wine66f", REG_MULTI_SZ, "Line\0", 6, 0);
+    verify_reg(hkey, "Wine66a", REG_MULTI_SZ, "Line", 5, TODO_REG_SIZE);
+    verify_reg(hkey, "Wine66b", REG_MULTI_SZ, "Line", 5, TODO_REG_SIZE);
+    verify_reg(hkey, "Wine66c", REG_MULTI_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine66d", REG_MULTI_SZ, "Line", 5, 0);
+    verify_reg(hkey, "Wine66e", REG_MULTI_SZ, "Line\0", 6, 0);
+    verify_reg(hkey, "Wine66f", REG_MULTI_SZ, "Line\0", 6, 0);
 
     test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
                      "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3737,10 +3735,10 @@ static void test_unicode_import(void)
                      "\"Wine67c\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00\n"
                      "\"Wine67d\"=hex(2):25,00,50,00,41,00,54,00,48,00,25,00,00,00,\n\n", &r);
     todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
-    todo_wine verify_reg(hkey, "Wine67a", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine67b", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine67c", REG_EXPAND_SZ, "%PATH%", 7, 0);
-    todo_wine verify_reg(hkey, "Wine67d", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine67a", REG_EXPAND_SZ, "%PATH%", 7, TODO_REG_SIZE);
+    verify_reg(hkey, "Wine67b", REG_EXPAND_SZ, "%PATH%", 7, TODO_REG_SIZE);
+    verify_reg(hkey, "Wine67c", REG_EXPAND_SZ, "%PATH%", 7, 0);
+    verify_reg(hkey, "Wine67d", REG_EXPAND_SZ, "%PATH%", 7, 0);
 
     err = RegCloseKey(hkey);
     ok(err == ERROR_SUCCESS, "got %d, expected 0\n", err);
@@ -3828,7 +3826,7 @@ static void test_import_with_whitespace(void)
     verify_reg(hkey, "Wine4a", REG_SZ, "Tab and four spaces", 20, 0);
     dword = 0x112233;
     verify_reg(hkey, "Wine4b", REG_DWORD, &dword, sizeof(dword), 0);
-    todo_wine verify_reg(hkey, "Wine4c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine4c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_str("    REGEDIT4\n\n"
                     "\t[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
@@ -3975,7 +3973,7 @@ static void test_unicode_import_with_whitespace(void)
     verify_reg(hkey, "Wine4a", REG_SZ, "Tab and four spaces", 20, 0);
     dword = 0x112233;
     verify_reg(hkey, "Wine4b", REG_DWORD, &dword, sizeof(dword), 0);
-    todo_wine verify_reg(hkey, "Wine4c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
+    verify_reg(hkey, "Wine4c", REG_MULTI_SZ, "Line concatenation\0", 20, 0);
 
     test_import_wstr("\xef\xbb\xbf    Windows Registry Editor Version 5.00\n\n"
                      "\t[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
-- 
2.14.1




More information about the wine-patches mailing list