//************************************************************* // // Global Variables // // Microsoft Confidential // Copyright (c) Microsoft Corporation 1995 // All rights reserved // //************************************************************* #include "uenv.h" HINSTANCE g_hDllInstance; DWORD g_dwBuildNumber; TCHAR g_szCommon[MAX_COMMON_LEN]; UINT g_cchCommon; NTPRODUCTTYPE g_ProductType; const TCHAR c_szStarDotStar[] = TEXT("*.*"); const TCHAR c_szSlash[] = TEXT("\\"); const TCHAR c_szDot[] = TEXT("."); const TCHAR c_szDotDot[] = TEXT(".."); const TCHAR c_szMAN[] = TEXT(".man"); const TCHAR c_szUSR[] = TEXT(".usr"); const TCHAR c_szLog[] = TEXT(".log"); const TCHAR c_szPDS[] = TEXT(".pds"); const TCHAR c_szPDM[] = TEXT(".pdm"); const TCHAR c_szLNK[] = TEXT(".lnk"); const TCHAR c_szBAK[] = TEXT(".bak"); const TCHAR c_szNTUserMan[] = TEXT("ntuser.man"); const TCHAR c_szNTUserDat[] = TEXT("ntuser.dat"); const TCHAR c_szNTConfigPol[] = TEXT("ntconfig.pol"); const TCHAR c_szNTUserStar[] = TEXT("ntuser.*"); const TCHAR c_szUserStar[] = TEXT("user.*"); const TCHAR c_szSpace[] = TEXT(" "); const TCHAR c_szDotPif[] = TEXT(".pif"); const TCHAR c_szNULL[] = TEXT(""); const TCHAR c_szCommonGroupsLocation[] = TEXT("Software\\Program Groups"); // // These are the shell folder names and locations // relative to the root of of the local profile // directory. NOTE: The folders that are // below other folders are in tier 2. If you // add a new folder to the root, be sure to fix // the tier 1 define in globals.h!! // FOLDER_INFO c_ShellFolders[NUM_SHELL_FOLDERS]; // // These are the shell folder names and locations // relative to the root of of the common profile // directory. NOTE: The folders that are // below other folders are in tier 2. If you // add a new folder to the root, be sure to fix // the tier 1 define in globals.h!! // FOLDER_INFO c_CommonShellFolders[NUM_COMMON_SHELL_FOLDERS]; //************************************************************* // // InitializeGlobals() // // Purpose: Initializes all the globals variables // at DLL load time. // // Parameters: hInstance - DLL instance handle // // Return: void // // Comments: // // History: Date Author Comment // 10/13/95 ericflo Created // //************************************************************* void InitializeGlobals (HINSTANCE hInstance) { OSVERSIONINFO ver; // // Save the instance handle // g_hDllInstance = hInstance; // // Query the build number // ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&ver); g_dwBuildNumber = (DWORD) LOWORD(ver.dwBuildNumber); // // Load the common string // LoadString (hInstance, IDS_COMMON, g_szCommon, MAX_COMMON_LEN); g_cchCommon = lstrlen (g_szCommon); // // Now load the directory names that match // the special folders // // AppData c_ShellFolders[0].bHidden = FALSE; c_ShellFolders[0].lpFolderName = TEXT("AppData"); LoadString(hInstance, IDS_SH_APPDATA, c_ShellFolders[0].lpFolderLocation, MAX_FOLDER_SIZE); // Desktop c_ShellFolders[1].bHidden = FALSE; c_ShellFolders[1].lpFolderName = TEXT("Desktop"); LoadString(hInstance, IDS_SH_DESKTOP, c_ShellFolders[1].lpFolderLocation, MAX_FOLDER_SIZE); // Favorites c_ShellFolders[2].bHidden = FALSE; c_ShellFolders[2].lpFolderName = TEXT("Favorites"); LoadString(hInstance, IDS_SH_FAVORITES, c_ShellFolders[2].lpFolderLocation, MAX_FOLDER_SIZE); // Nethood c_ShellFolders[3].bHidden = TRUE; c_ShellFolders[3].lpFolderName = TEXT("NetHood"); LoadString(hInstance, IDS_SH_NETHOOD, c_ShellFolders[3].lpFolderLocation, MAX_FOLDER_SIZE); // Personal c_ShellFolders[4].bHidden = FALSE; c_ShellFolders[4].lpFolderName = TEXT("Personal"); LoadString(hInstance, IDS_SH_PERSONAL, c_ShellFolders[4].lpFolderLocation, MAX_FOLDER_SIZE); // PrintHood c_ShellFolders[5].bHidden = TRUE; c_ShellFolders[5].lpFolderName = TEXT("PrintHood"); LoadString(hInstance, IDS_SH_PRINTHOOD, c_ShellFolders[5].lpFolderLocation, MAX_FOLDER_SIZE); // Recent c_ShellFolders[6].bHidden = TRUE; c_ShellFolders[6].lpFolderName = TEXT("Recent"); LoadString(hInstance, IDS_SH_RECENT, c_ShellFolders[6].lpFolderLocation, MAX_FOLDER_SIZE); // SendTo c_ShellFolders[7].bHidden = FALSE; c_ShellFolders[7].lpFolderName = TEXT("SendTo"); LoadString(hInstance, IDS_SH_SENDTO, c_ShellFolders[7].lpFolderLocation, MAX_FOLDER_SIZE); // Start Menu c_ShellFolders[8].bHidden = FALSE; c_ShellFolders[8].lpFolderName = TEXT("Start Menu"); LoadString(hInstance, IDS_SH_STARTMENU, c_ShellFolders[8].lpFolderLocation, MAX_FOLDER_SIZE); // Templates c_ShellFolders[9].bHidden = TRUE; c_ShellFolders[9].lpFolderName = TEXT("Templates"); LoadString(hInstance, IDS_SH_TEMPLATES, c_ShellFolders[9].lpFolderLocation, MAX_FOLDER_SIZE); // Programs c_ShellFolders[10].bHidden = FALSE; c_ShellFolders[10].lpFolderName = TEXT("Programs"); LoadString(hInstance, IDS_SH_PROGRAMS, c_ShellFolders[10].lpFolderLocation, MAX_FOLDER_SIZE); // Startup c_ShellFolders[11].bHidden = FALSE; c_ShellFolders[11].lpFolderName = TEXT("Startup"); LoadString(hInstance, IDS_SH_STARTUP, c_ShellFolders[11].lpFolderLocation, MAX_FOLDER_SIZE); // // Now load the directory names that match // the common special folders // // Common Desktop c_CommonShellFolders[0].bHidden = FALSE; c_CommonShellFolders[0].lpFolderName = TEXT("Common Desktop"); LoadString(hInstance, IDS_SH_DESKTOP, c_CommonShellFolders[0].lpFolderLocation, MAX_FOLDER_SIZE); // Common Start Menu c_CommonShellFolders[1].bHidden = FALSE; c_CommonShellFolders[1].lpFolderName = TEXT("Common Start Menu"); LoadString(hInstance, IDS_SH_STARTMENU, c_CommonShellFolders[1].lpFolderLocation, MAX_FOLDER_SIZE); // Common Programs c_CommonShellFolders[2].bHidden = FALSE; c_CommonShellFolders[2].lpFolderName = TEXT("Common Programs"); LoadString(hInstance, IDS_SH_PROGRAMS, c_CommonShellFolders[2].lpFolderLocation, MAX_FOLDER_SIZE); // Common Startup c_CommonShellFolders[3].bHidden = FALSE; c_CommonShellFolders[3].lpFolderName = TEXT("Common Startup"); LoadString(hInstance, IDS_SH_STARTUP, c_CommonShellFolders[3].lpFolderLocation, MAX_FOLDER_SIZE); } //************************************************************* // // InitializeProductType() // // Purpose: Determines the current product type and // sets the g_ProductType global variable. // // Parameters: void // // Return: void // // Comments: // // History: Date Author Comment // 4/08/96 ericflo Created // //************************************************************* void InitializeProductType (void) { HKEY hkey; LONG lResult; TCHAR szProductType[50]; DWORD dwType, dwSize; // // Default product type is workstation. // g_ProductType = PT_WORKSTATION; // // Query the registry for the product type. // lResult = RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT("System\\CurrentControlSet\\Control\\ProductOptions"), 0, KEY_READ, &hkey); if (lResult != ERROR_SUCCESS) { DebugMsg((DM_WARNING, TEXT("InitializeProductType: Failed to open registry (%d)"), lResult)); goto Exit; } dwSize = 50; szProductType[0] = TEXT('\0'); lResult = RegQueryValueEx (hkey, TEXT("ProductType"), NULL, &dwType, (LPBYTE) szProductType, &dwSize); if (lResult != ERROR_SUCCESS) { DebugMsg((DM_WARNING, TEXT("InitializeProductType: Failed to query product type (%d)"), lResult)); goto Exit; } RegCloseKey (hkey); // // Map the product type string to the enumeration value. // if (!lstrcmpi (szProductType, TEXT("WinNT"))) { g_ProductType = PT_WORKSTATION; } else if (!lstrcmpi (szProductType, TEXT("ServerNT"))) { g_ProductType = PT_SERVER; } else if (!lstrcmpi (szProductType, TEXT("LanmanNT"))) { g_ProductType = PT_DC; } else { DebugMsg((DM_WARNING, TEXT("InitializeProductType: Unknown product type! <%s>"), szProductType)); } Exit: DebugMsg((DM_VERBOSE, TEXT("InitializeProductType: Product Type: %d"), g_ProductType)); }