[NTVDM]: Don't display an error message if the VDD registry key (or value) just doesn...
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 28 Dec 2013 22:22:12 +0000 (22:22 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 28 Dec 2013 22:22:12 +0000 (22:22 +0000)
Thanks to Lee Schroeder and oldman on the forum for having detected this :)

svn path=/branches/ntvdm/; revision=61459

subsystems/ntvdm/vddsup.c

index 89424c7..2964c1e 100644 (file)
@@ -251,13 +251,20 @@ BOOL LoadInstallableVDD(VOID)
 
     HANDLE hVDD;
 
 
     HANDLE hVDD;
 
-    /* Open the VDD registry key */
-    if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
-                      VDDKeyName,
-                      0,
-                      KEY_QUERY_VALUE,
-                      &hVDDKey) != ERROR_SUCCESS)
+    /* Try to open the VDD registry key */
+    Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+                          VDDKeyName,
+                          0,
+                          KEY_QUERY_VALUE,
+                          &hVDDKey);
+    if (Error == ERROR_FILE_NOT_FOUND)
     {
     {
+        /* If the key just doesn't exist, don't do anything else */
+        return TRUE;
+    }
+    else if (Error != ERROR_SUCCESS)
+    {
+        /* The key exists but there was an access error: display an error and quit */
         DisplayMessage(ERROR_REGVDD);
         return FALSE;
     }
         DisplayMessage(ERROR_REGVDD);
         return FALSE;
     }
@@ -272,8 +279,18 @@ BOOL LoadInstallableVDD(VOID)
                              &Type,
                              NULL,
                              &BufSize);
                              &Type,
                              NULL,
                              &BufSize);
-    if (Error != ERROR_SUCCESS || Type != REG_MULTI_SZ)
+    if (Error == ERROR_FILE_NOT_FOUND)
+    {
+        /* If the value just doesn't exist, don't do anything else */
+        Success = TRUE;
+        goto Quit;
+    }
+    else if (Error != ERROR_SUCCESS || Type != REG_MULTI_SZ)
     {
     {
+        /*
+         * The value exists but there was an access error or
+         * is of the wrong type: display an error and quit.
+         */
         DisplayMessage(ERROR_REGVDD);
         Success = FALSE;
         goto Quit;
         DisplayMessage(ERROR_REGVDD);
         Success = FALSE;
         goto Quit;