]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-afscreds-username-20080212
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 12 Feb 2008 13:21:17 +0000 (13:21 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 12 Feb 2008 13:21:17 +0000 (13:21 +0000)
LICENSE MIT

Use GetUserNameEx to obtain the username instead of searching the registry.
Try UserPrincipalName first and fallback to SamCompatible.

(cherry picked from commit 512ec8f51880d4e9e1cc5564bd27991a2c2915d6)

src/WINNT/client_creds/NTMakefile
src/WINNT/client_creds/window.cpp

index caef2be7b82d1ab317f47c0fd2ddb86dcef7d2a8..3331a14b99b1869ab048168949e664d9b0b200c7 100644 (file)
@@ -55,7 +55,8 @@ VCLIBS =\
        ole32.lib \
        mpr.lib \
        userenv.lib \
-       netapi32.lib 
+       netapi32.lib \
+        secur32.lib 
 
 EXELIBS = \
        $(DESTDIR)\lib\afs\afspioctl.lib \
index 030c6953ae3288a03ea0a3c5aed1185fe6ae74d1..d8138c38c2459f5ba9a0d9cf1d173d4f59bd0134 100644 (file)
@@ -16,6 +16,9 @@ extern "C" {
 
 #include "afscreds.h"
 
+#define SECURITY_WIN32 1
+#include <security.h>
+
 /*
  * DEFINITIONS ________________________________________________________________
  *
@@ -255,7 +258,7 @@ void Main_OnInitDialog (HWND hDlg)
 
     TCHAR szVersion[256];
     DWORD dwPatch = 0;
-    TCHAR szUser[256];
+    TCHAR szUser[1024];
     GetString (szVersion, IDS_UNKNOWN);
     GetString (szUser, IDS_UNKNOWN);
 
@@ -273,49 +276,9 @@ void Main_OnInitDialog (HWND hDlg)
         RegCloseKey (hk);
     }
 
-    /* We should probably be using GetUserNameEx() for this */
-    BOOL fFoundUserName = FALSE;
-    if (RegOpenKey (HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"), &hk) == 0)
-    {
-        DWORD dwSize = sizeof(szUser);
-        DWORD dwType = REG_SZ;
-        if (RegQueryValueEx (hk, TEXT("Logon User Name"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0)
-            fFoundUserName = TRUE;
-        RegCloseKey (hk);
-    }
-    if (!fFoundUserName ) 
-    {
-        if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Explorer"), &hk) == 0)
-        {
-            DWORD dwSize = sizeof(szUser);
-            DWORD dwType = REG_SZ;
-            if (RegQueryValueEx (hk, TEXT("Logon User Name"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0)
-                fFoundUserName = TRUE;
-            RegCloseKey (hk);
-        }
-    }
-    if (!fFoundUserName ) 
-    {
-        if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hk) == 0)
-        {
-            DWORD dwSize = sizeof(szUser);
-            DWORD dwType = REG_SZ;
-            if (RegQueryValueEx (hk, TEXT("DefaultUserName"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0)
-                fFoundUserName = TRUE;
-            RegCloseKey (hk);
-        }
-    }   
-    if (!fFoundUserName)
-    {
-        if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Network\\Logon"), &hk) == 0)
-        {
-            DWORD dwSize = sizeof(szUser);
-            DWORD dwType = REG_SZ;
-            if (RegQueryValueEx (hk, TEXT("UserName"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0)
-                fFoundUserName = TRUE;
-            RegCloseKey (hk);
-        }
-    }
+    DWORD dwUserLen =  sizeof(szUser)/sizeof(TCHAR);
+    if (!GetUserNameEx(NameUserPrincipal, szUser, &dwUserLen))
+        GetUserNameEx(NameSamCompatible, szUser, &dwUserLen);
 
     TCHAR szSource[ cchRESOURCE ];
     TCHAR szTarget[ cchRESOURCE ];