diff --git a/src/uninstall.c b/src/uninstall.c
index 94d3957..b2a20cd 100644
--- a/src/uninstall.c
+++ b/src/uninstall.c
@@ -17,7 +17,7 @@
  *		- the Vim entry in the Start Menu
  */
 
-/* Include common code for dosinst.c and uninstall.c. */
+// Include common code for dosinst.c and uninstall.c.
 #include "dosinst.h"
 
 /*
@@ -41,9 +41,9 @@
 
     if (!did_load)
     {
-	/* The RegDeleteKeyEx() function is only available on new systems.  It
-	 * is required for 64-bit registry access.  For other systems fall
-	 * back to RegDeleteKey(). */
+	// The RegDeleteKeyEx() function is only available on new systems.  It
+	// is required for 64-bit registry access.  For other systems fall
+	// back to RegDeleteKey().
 	did_load = TRUE;
 	advapi_lib = LoadLibrary("ADVAPI32.DLL");
 	if (advapi_lib != NULL)
@@ -66,14 +66,14 @@
     DWORD	value_type;
     int		r;
 
-    /* Open the key where the path to gvim.exe is stored. */
+    // Open the key where the path to gvim.exe is stored.
     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
 		    KEY_WOW64_64KEY | KEY_READ, &key_handle) != ERROR_SUCCESS)
 	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
 		    KEY_WOW64_32KEY | KEY_READ, &key_handle) != ERROR_SUCCESS)
 	    return 0;
 
-    /* get the DisplayName out of it to show the user */
+    // get the DisplayName out of it to show the user
     r = RegQueryValueEx(key_handle, "path", 0,
 					  &value_type, (LPBYTE)buf, &bufsize);
     RegCloseKey(key_handle);
@@ -92,13 +92,13 @@
     DWORD	value_type;
     int		r;
 
-    /* Open the key where the path to gvim.exe is stored. */
+    // Open the key where the path to gvim.exe is stored.
     if (RegOpenKeyEx(HKEY_CLASSES_ROOT,
 		"Applications\\gvim.exe\\shell\\edit\\command", 0,
 		    KEY_WOW64_64KEY | KEY_READ, &key_handle) != ERROR_SUCCESS)
 	return 0;
 
-    /* get the DisplayName out of it to show the user */
+    // get the DisplayName out of it to show the user
     r = RegQueryValueEx(key_handle, "", 0, &value_type, (LPBYTE)buf, &bufsize);
     RegCloseKey(key_handle);
 
@@ -210,7 +210,7 @@
 	while (fgets(line, sizeof(line), fd) != NULL)
 	{
 	    for (p = line; *p != 0; ++p)
-		/* don't accept "vim60an" when looking for "vim60". */
+		// don't accept "vim60an" when looking for "vim60".
 		if (strnicmp(p, VIM_VERSION_NODOT, ver_len) == 0
 			&& !isdigit(p[ver_len])
 			&& !isalpha(p[ver_len]))
@@ -293,7 +293,7 @@
 	    remove_if_exists(path, targets[i].lnkname);
 	remove_if_exists(path, "uninstall.lnk");
 	remove_if_exists(path, "Help.lnk");
-	/* Win95 uses .pif, WinNT uses .lnk */
+	// Win95 uses .pif, WinNT uses .lnk
 	remove_if_exists(path, "Vim tutor.pif");
 	remove_if_exists(path, "Vim tutor.lnk");
 	remove_if_exists(path, "Vim online.url");
@@ -322,13 +322,13 @@
     char	path[MAX_PATH];
     char	popup_path[MAX_PATH];
 
-    /* The nsis uninstaller calls us with a "-nsis" argument. */
+    // The nsis uninstaller calls us with a "-nsis" argument.
     if (argc == 2 && stricmp(argv[1], "-nsis") == 0)
 	interactive = FALSE;
     else
 	interactive = TRUE;
 
-    /* Initialize this program. */
+    // Initialize this program.
     do_inits(argv);
 
     printf("This program will remove the following items:\n");
@@ -342,8 +342,8 @@
 	if (!interactive || confirm())
 	{
 	    remove_popup();
-	    /* Assume the "Open With" entry can be removed as well, don't
-	     * bother the user with asking him again. */
+	    // Assume the "Open With" entry can be removed as well, don't
+	    // bother the user with asking him again.
 	    remove_openwith();
 	}
     }
