windows-misc-20040803
[openafs.git] / src / WINNT / client_creds / window.cpp
index 0a2cb14..d788d9f 100644 (file)
 extern "C" {
 #include <afs/param.h>
 #include <afs/stds.h>
+#include <afs/afskfw.h>
+#include "ipaddrchg.h"
 }
 
 #include "afscreds.h"
-#include "afskfw.h"
-
 
 /*
  * DEFINITIONS ________________________________________________________________
@@ -208,6 +208,9 @@ BOOL CALLBACK Main_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
                       if (StartService (hService, 0, 0))
                           TestAndDoMapShare(SERVICE_START_PENDING);
                                  if ( KFW_is_available() && KFW_AFS_wait_for_service_start() ) {
+#ifdef USE_MS2MIT
+                              KFW_import_windows_lsa();
+#endif /* USE_MS2MIT */
                                          KFW_AFS_renew_tokens_for_all_cells();
                                                  }
 
@@ -243,34 +246,35 @@ void Main_Show (BOOL fShow)
 
 void Main_OnInitDialog (HWND hDlg)
 {
-   if (!g.fIsWinNT)
-      {
-      TCHAR szTitle[256];
-      GetString (szTitle, IDS_TITLE_95);
-      SetWindowText (hDlg, szTitle);
-      }
+    if (!g.fIsWinNT)
+    {
+        TCHAR szTitle[256];
+        GetString (szTitle, IDS_TITLE_95);
+        SetWindowText (hDlg, szTitle);
+    }
 
-   TCHAR szVersion[256];
-   DWORD dwPatch = 0;
-   TCHAR szUser[256];
-   GetString (szVersion, IDS_UNKNOWN);
-   GetString (szUser, IDS_UNKNOWN);
+    TCHAR szVersion[256];
+    DWORD dwPatch = 0;
+    TCHAR szUser[256];
+    GetString (szVersion, IDS_UNKNOWN);
+    GetString (szUser, IDS_UNKNOWN);
 
-   HKEY hk;
-   if (RegOpenKey (HKEY_LOCAL_MACHINE, REGSTR_PATH_AFS, &hk) == 0)
-      {
-      DWORD dwSize = sizeof(szVersion);
-      DWORD dwType = REG_SZ;
-      RegQueryValueEx (hk, REGVAL_AFS_VERSION, NULL, &dwType, (PBYTE)szVersion, &dwSize);
+    HKEY hk;
+    if (RegOpenKey (HKEY_LOCAL_MACHINE, REGSTR_PATH_AFS, &hk) == 0)
+    {
+        DWORD dwSize = sizeof(szVersion);
+        DWORD dwType = REG_SZ;
+        RegQueryValueEx (hk, REGVAL_AFS_VERSION, NULL, &dwType, (PBYTE)szVersion, &dwSize);
 
-      dwSize = sizeof(dwPatch);
-      dwType = REG_DWORD;
-      RegQueryValueEx (hk, REGVAL_AFS_PATCH, NULL, &dwType, (PBYTE)&dwPatch, &dwSize);
-      RegCloseKey (hk);
-      }
+        dwSize = sizeof(dwPatch);
+        dwType = REG_DWORD;
+        RegQueryValueEx (hk, REGVAL_AFS_PATCH, NULL, &dwType, (PBYTE)&dwPatch, &dwSize);
+        RegCloseKey (hk);
+    }
 
-   BOOL fFoundUserName = FALSE;
-    if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Explorer"), &hk) == 0)
+    /* 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;
@@ -280,6 +284,17 @@ void Main_OnInitDialog (HWND hDlg)
     }
     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);
@@ -288,29 +303,29 @@ void Main_OnInitDialog (HWND hDlg)
                 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);
+        }
     }
-   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);
-       }
-   }
 
-   TCHAR szSource[ cchRESOURCE ];
-   TCHAR szTarget[ cchRESOURCE ];
+    TCHAR szSource[ cchRESOURCE ];
+    TCHAR szTarget[ cchRESOURCE ];
 
-   GetString (szSource, (dwPatch) ? IDS_TITLE_VERSION : IDS_TITLE_VERSION_NOPATCH);
-   wsprintf (szTarget, szSource, szVersion, dwPatch);
-   SetDlgItemText (hDlg, IDC_TITLE_VERSION, szTarget);
+    GetString (szSource, (dwPatch) ? IDS_TITLE_VERSION : IDS_TITLE_VERSION_NOPATCH);
+    wsprintf (szTarget, szSource, szVersion, dwPatch);
+    SetDlgItemText (hDlg, IDC_TITLE_VERSION, szTarget);
 
-   GetDlgItemText (hDlg, IDC_TITLE_NT, szSource, cchRESOURCE);
-   wsprintf (szTarget, szSource, szUser);
-   SetDlgItemText (hDlg, IDC_TITLE_NT, szTarget);
+    GetDlgItemText (hDlg, IDC_TITLE_NT, szSource, cchRESOURCE);
+    wsprintf (szTarget, szSource, szUser);
+    SetDlgItemText (hDlg, IDC_TITLE_NT, szTarget);
 }
 
 
@@ -397,19 +412,27 @@ void Main_OnSelectTab (void)
 
 void Main_OnCheckTerminate (void)
 {
-   HKEY hk;
-   if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("System\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters"), &hk) == 0)
-      {
+    HKEY hk;
+
+    if (RegOpenKey (HKEY_CURRENT_USER, REGSTR_PATH_OPENAFS_CLIENT, &hk) == 0)
+    {
+        DWORD dwSize = sizeof(g.fStartup);
+        DWORD dwType = REG_DWORD;
+        RegQueryValueEx (hk, TEXT("ShowTrayIcon"), NULL, &dwType, (PBYTE)&g.fStartup, &dwSize);
+        RegCloseKey (hk);
+    }
+    else if (RegOpenKey (HKEY_LOCAL_MACHINE, REGSTR_PATH_OPENAFS_CLIENT, &hk) == 0)
+    {
       DWORD dwSize = sizeof(g.fStartup);
       DWORD dwType = REG_DWORD;
       RegQueryValueEx (hk, TEXT("ShowTrayIcon"), NULL, &dwType, (PBYTE)&g.fStartup, &dwSize);
       RegCloseKey (hk);
-      }
+    }
 
-   Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup);
+    Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup);
 
-   if (!g.fStartup)
-      Quit();
+    if (!g.fStartup)
+        Quit();
 }
 
 
@@ -716,14 +739,14 @@ void Terminate_OnOK (HWND hDlg)
 
    g.fStartup = IsDlgButtonChecked (hDlg, IDC_STARTUP);
 
-   HKEY hk;
-   if (RegCreateKey (HKEY_LOCAL_MACHINE, TEXT("System\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters"), &hk) == 0)
-      {
-      DWORD dwSize = sizeof(g.fStartup);
-      DWORD dwType = REG_DWORD;
-      RegSetValueEx (hk, TEXT("ShowTrayIcon"), NULL, dwType, (PBYTE)&g.fStartup, dwSize);
-      RegCloseKey (hk);
-      }
+    HKEY hk;
+    if (RegCreateKey (HKEY_CURRENT_USER, REGSTR_PATH_OPENAFS_CLIENT, &hk) == 0)
+    {
+        DWORD dwSize = sizeof(g.fStartup);
+        DWORD dwType = REG_DWORD;
+        RegSetValueEx (hk, TEXT("ShowTrayIcon"), NULL, dwType, (PBYTE)&g.fStartup, dwSize);
+        RegCloseKey (hk);
+    }
 
    Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup);