diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 0ae725d93..067225241 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2005-07-04  Pierre Humblet <pierre.humblet@ieee.org>
+
+	* cygheap.h (struct init_cygheap): Delete cygwin_regname member.
+	* external.cc (cygwin_internal): Use cygpsid::get_id for
+	CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID.
+	Turn CW_SET_CYGWIN_REGISTRY_NAME and CW_GET_CYGWIN_REGISTRY_NAME
+	into noops.
+
 2005-07-03  Christopher Faylor  <cgf@timesys.com>
 
 	* thread.cc (pthread_mutex::init): Remove unneeded efault/mutex check.
diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h
index 5738d25d4..3b319d094 100644
--- a/winsup/cygwin/cygheap.h
+++ b/winsup/cygwin/cygheap.h
@@ -278,7 +278,6 @@ struct init_cygheap
   HANDLE shared_h;
   HANDLE console_h;
   HANDLE mt_h;
-  char *cygwin_regname;
   cwdstuff cwd;
   dtable fdtab;
   LUID luid[SE_NUM_PRIVS];
diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
index c731217ab..a40ef1ed7 100644
--- a/winsup/cygwin/external.cc
+++ b/winsup/cygwin/external.cc
@@ -197,17 +197,8 @@ cygwin_internal (cygwin_getinfo_types t, ...)
 	}
 
       case CW_SET_CYGWIN_REGISTRY_NAME:
-	{
-	  const char *cr = va_arg (arg, char *);
-	  myfault efault;
-	  if (efault.faulted (EFAULT) || !*cr)
-	    return (DWORD) NULL;
-	  cygheap->cygwin_regname = (char *) crealloc (cygheap->cygwin_regname,
-						       strlen (cr) + 1);
-	  strcpy (cygheap->cygwin_regname, cr);
-	}
       case CW_GET_CYGWIN_REGISTRY_NAME:
-	  return (DWORD) cygheap->cygwin_regname;
+	return 0;
 
       case CW_STRACE_TOGGLE:
 	{
@@ -281,17 +272,13 @@ cygwin_internal (cygwin_getinfo_types t, ...)
 	}
       case CW_GET_UID_FROM_SID:
 	{
-	  PSID psid = va_arg (arg, PSID);
-	  cygsid sid (psid);
-	  struct passwd *pw = internal_getpwsid (sid);
-	  return pw ? pw->pw_uid : (__uid32_t)-1;
+	  cygpsid psid = va_arg (arg, PSID);
+	  return psid.get_id (false, NULL);
 	}
       case CW_GET_GID_FROM_SID:
 	{
-	  PSID psid = va_arg (arg, PSID);
-	  cygsid sid (psid);
-	  struct __group32 *gr = internal_getgrsid (sid);
-	  return gr ? gr->gr_gid : (__gid32_t)-1;
+	  cygpsid psid = va_arg (arg, PSID);
+	  return psid.get_id (true, NULL);
 	}
       case CW_GET_BINMODE:
 	{