diff --git a/ProcessWin32.c b/ProcessWin32.c
index 0b5a90a7cb46047e0900d2842cc1706f282498b7..84e64b2ad01a82ca98cfa3008c43f8277e5ae478 100644
--- a/ProcessWin32.c
+++ b/ProcessWin32.c
@@ -2487,6 +2487,10 @@ static int kwsysProcess_List_NextProcess(kwsysProcess_List* self)
 /*--------------------------------------------------------------------------*/
 static int kwsysProcess_List__New_NT4(kwsysProcess_List* self)
 {
+  /* Get a handle to the NT runtime module that should already be
+     loaded in this program.  This does not actually increment the
+     reference count to the module so we do not need to close the
+     handle.  */
   HANDLE hNT = GetModuleHandle("ntdll.dll");
   if(hNT)
     {
@@ -2494,7 +2498,6 @@ static int kwsysProcess_List__New_NT4(kwsysProcess_List* self)
     self->P_ZwQuerySystemInformation =
       ((ZwQuerySystemInformationType)
        GetProcAddress(hNT, "ZwQuerySystemInformation"));
-    CloseHandle(hNT);
     }
   if(!self->P_ZwQuerySystemInformation)
     {
@@ -2588,6 +2591,10 @@ static int kwsysProcess_List__GetParentId_NT4(kwsysProcess_List* self)
 /*--------------------------------------------------------------------------*/
 static int kwsysProcess_List__New_Snapshot(kwsysProcess_List* self)
 {
+  /* Get a handle to the Windows runtime module that should already be
+     loaded in this program.  This does not actually increment the
+     reference count to the module so we do not need to close the
+     handle.  */
   HANDLE hKernel = GetModuleHandle("kernel32.dll");
   if(hKernel)
     {
@@ -2600,7 +2607,6 @@ static int kwsysProcess_List__New_Snapshot(kwsysProcess_List* self)
     self->P_Process32Next =
       ((Process32NextType)
        GetProcAddress(hKernel, "Process32Next"));
-    CloseHandle(hKernel);
     }
   return (self->P_CreateToolhelp32Snapshot &&
           self->P_Process32First &&