Windows: Remove High Security Integrated Logon
[openafs.git] / src / WINNT / client_creds / main.cpp
index 0cdd114..b3d554c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
 #include <ws2tcpip.h>
 
 extern "C" {
+#include <afsconfig.h>
 #include <afs/param.h>
+#include <roken.h>
 #include <afs/stds.h>
 #include <osilog.h>
 #include <afs/fs_utils.h>
-#include <rxkad.h>
+#include <rx\rxkad.h>
 #include <afs/afskfw.h>
 #include "ipaddrchg.h"
 }
@@ -68,6 +70,7 @@ extern "C" int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR pCmdLine,
    osi_LogEvent0("AFSCreds Main command line",pCmdLine);
    fs_utils_InitMountRoot();
 
+
    if (InitApp (pCmdLine))
       {
       MSG msg;
@@ -83,7 +86,6 @@ extern "C" int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR pCmdLine,
    return 0;
 }
 
-#define ISHIGHSECURITY(v) ( ((v) & LOGON_OPTION_HIGHSECURITY)==LOGON_OPTION_HIGHSECURITY)
 #define REG_CLIENT_PROVIDER_KEY "SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\NetworkProvider"
 
 BOOL InitApp (LPSTR pszCmdLineA)
@@ -151,10 +153,10 @@ BOOL InitApp (LPSTR pszCmdLineA)
             fUninstall = TRUE;
             break;
 
-                case ':':
+         case ':':
              CopyAnsiToString(g.SmbName,pszCmdLineA);
-                        MapShareName(pszCmdLineA);
-                        break;
+             MapShareName(pszCmdLineA);
+             break;
 
          case 'z':
          case 'Z':
@@ -178,10 +180,11 @@ BOOL InitApp (LPSTR pszCmdLineA)
    else if (fUninstall)
       Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup = FALSE);
 
-   if (fInstall)
+   if (fInstall || fUninstall)
       {
       HKEY hk;
-      if (RegCreateKey (HKEY_CURRENT_USER, AFSREG_USER_OPENAFS_SUBKEY, &hk) == 0)
+      if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSREG_USER_OPENAFS_SUBKEY, 0, NULL, 0,
+                         (IsWow64()?KEY_WOW64_64KEY:0)|KEY_WRITE, NULL, &hk, NULL) == 0)
          {
          DWORD dwSize = sizeof(g.fStartup);
          DWORD dwType = REG_DWORD;
@@ -216,14 +219,16 @@ BOOL InitApp (LPSTR pszCmdLineA)
       return FALSE;
 
    HKEY hk;
-    if (RegOpenKey (HKEY_CURRENT_USER, AFSREG_USER_OPENAFS_SUBKEY, &hk) == 0)
+    if (RegOpenKeyEx (HKEY_CURRENT_USER, AFSREG_USER_OPENAFS_SUBKEY, 0,
+                       (IsWow64()?KEY_WOW64_64KEY:0)|KEY_QUERY_VALUE, &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, AFSREG_CLT_OPENAFS_SUBKEY, &hk) == 0)
+    else if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSREG_CLT_OPENAFS_SUBKEY, 0,
+                            (IsWow64()?KEY_WOW64_64KEY:0)|KEY_QUERY_VALUE, &hk) == 0)
       {
       DWORD dwSize = sizeof(g.fStartup);
       DWORD dwType = REG_DWORD;
@@ -254,8 +259,8 @@ BOOL InitApp (LPSTR pszCmdLineA)
    InitCommonControls();
    RegisterCheckListClass();
    osi_Init();
-   lock_InitializeMutex(&g.expirationCheckLock, "expiration check lock");
-   lock_InitializeMutex(&g.credsLock, "global creds lock");
+   lock_InitializeMutex(&g.expirationCheckLock, "expiration check lock", 0);
+   lock_InitializeMutex(&g.credsLock, "global creds lock", 0);
 
    KFW_AFS_wait_for_service_start();
 
@@ -271,7 +276,7 @@ BOOL InitApp (LPSTR pszCmdLineA)
                    OutputDebugString("AFSD Service not configured\n");
                else if ( fAutoInit )
                    OutputDebugString("AFSD Service will be started\n");
-           }   
+           }
        }
    }
 
@@ -279,13 +284,13 @@ BOOL InitApp (LPSTR pszCmdLineA)
     if ( g.fIsWinNT && !IsServiceRunning() && IsServiceConfigured() && fAutoInit ) {
         SC_HANDLE hManager;
 
-        if ((hManager = OpenSCManager( NULL, NULL, 
+        if ((hManager = OpenSCManager( NULL, NULL,
                                        SC_MANAGER_CONNECT |
                                        SC_MANAGER_ENUMERATE_SERVICE |
                                        SC_MANAGER_QUERY_LOCK_STATUS)) != NULL )
         {
             SC_HANDLE hService;
-            if ((hService = OpenService( hManager, TEXT("TransarcAFSDaemon"), 
+            if ((hService = OpenService( hManager, TEXT("TransarcAFSDaemon"),
                                          SERVICE_QUERY_STATUS | SERVICE_START) ) != NULL)
             {
                 if (StartService(hService, 0, 0)) {
@@ -332,7 +337,7 @@ BOOL InitApp (LPSTR pszCmdLineA)
       else if (!IsServerInstalled())
          Message (MB_ICONHAND, IDS_UNCONFIG_TITLE, IDS_UNCONFIG_DESC);
       }
-   if (IsServiceRunning()) { 
+   if (IsServiceRunning()) {
       if ( fRenewMaps )
       {
           if ( IsDebuggerPresent() )
@@ -402,7 +407,8 @@ BOOL IsServerInstalled (void)
    BOOL fInstalled = FALSE;
    HKEY hk;
 
-   if (RegOpenKey (HKEY_LOCAL_MACHINE, AFSREG_SVR_SVC_SUBKEY, &hk) == 0)
+   if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSREG_SVR_SVC_SUBKEY, 0,
+                      (IsWow64()?KEY_WOW64_64KEY:0)|KEY_QUERY_VALUE, &hk) == 0)
       {
       fInstalled = TRUE;
       RegCloseKey (hk);