mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
5.6 KiB
157 lines
5.6 KiB
//+----------------------------------------------------------------------------
|
|
//
|
|
// File: common.h
|
|
//
|
|
// Module: CMSTP.EXE
|
|
//
|
|
// Synopsis: This header contains common functions used for the different
|
|
// aspects of the profile installer (install, uninstall, migration).
|
|
//
|
|
// Copyright (c) 1997-1999 Microsoft Corporation
|
|
//
|
|
// Author: quintinb Created Header 07/14/98
|
|
//
|
|
//+----------------------------------------------------------------------------
|
|
#ifndef _CMSTP_COMMON_H
|
|
#define _CMSTP_COMMON_H
|
|
|
|
#define _MBCS
|
|
|
|
//
|
|
// Standard Windows Includes
|
|
//
|
|
#include <windows.h>
|
|
#include <ras.h>
|
|
#include <raserror.h>
|
|
#include <shlobj.h>
|
|
#include <shellapi.h>
|
|
//#include <objbase.h>
|
|
|
|
//
|
|
// Our own includes
|
|
//
|
|
#include "cmdebug.h"
|
|
#include "resource.h"
|
|
#include "cmsetup.h"
|
|
#include "dynamiclib.h"
|
|
#include "cmras.h"
|
|
#include "mutex.h"
|
|
//#include "pidlutil.h"
|
|
//#include "netcon.h"
|
|
//#include "netconp.h"
|
|
//#include "cfpidl.h"
|
|
#include "loadconnfolder.h"
|
|
|
|
#include "base_str.h"
|
|
#include "mgr_str.h"
|
|
#include "inf_str.h"
|
|
#include "ras_str.h"
|
|
#include "stp_str.h"
|
|
#include "reg_str.h"
|
|
#include "userinfo_str.h"
|
|
#include "ver_str.h"
|
|
|
|
//
|
|
// Type Definitions
|
|
//
|
|
typedef DWORD (WINAPI *pfnRasSetEntryPropertiesSpec)(LPCTSTR, LPCTSTR, LPRASENTRY, DWORD, LPBYTE, DWORD);
|
|
typedef DWORD (WINAPI *pfnRasGetEntryPropertiesSpec)(LPCTSTR, LPCTSTR, LPRASENTRY, LPDWORD, LPBYTE, LPDWORD);
|
|
typedef DWORD (WINAPI *pfnRasDeleteEntrySpec)(LPCTSTR, LPCTSTR);
|
|
typedef DWORD (WINAPI *pfnRasEnumEntriesSpec)(LPTSTR, LPTSTR, LPRASENTRYNAME, LPDWORD, LPDWORD);
|
|
typedef DWORD (WINAPI *pfnRasEnumDevicesSpec)(LPRASDEVINFO, LPDWORD, LPDWORD);
|
|
typedef DWORD (WINAPI *pfnRasSetCredentialsSpec)(LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL);
|
|
typedef DWORD (WINAPI *pfnSHGetFolderPathSpec)(HWND, int, HANDLE, DWORD, LPTSTR);
|
|
typedef HRESULT (WINAPI *pfnLaunchConnectionSpec)(const GUID&);
|
|
typedef HRESULT (WINAPI *pfnCreateShortcutSpec)(const GUID&, WCHAR*);
|
|
typedef HRESULT (WINAPI *pfnLaunchConnectionExSpec)(DWORD, const GUID&);
|
|
typedef DWORD (WINAPI *pfnSHGetSpecialFolderPathWSpec)(HWND, WCHAR*, int, BOOL);
|
|
|
|
typedef struct _InitDialogStruct
|
|
{
|
|
LPTSTR pszTitle;
|
|
BOOL bNoDesktopIcon;
|
|
BOOL bSingleUser;
|
|
} InitDialogStruct;
|
|
|
|
//
|
|
// Constants
|
|
//
|
|
const TCHAR* const c_pszRegNameSpace = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\Desktop\\NameSpace");
|
|
const TCHAR* const c_pszRegUninstall = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");
|
|
const TCHAR* const c_pszProfileInstallPath = TEXT("ProfileInstallPath");
|
|
|
|
const TCHAR* const c_pszRegStickyUiDefault = TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Network\\Network Connections");
|
|
const TCHAR* const c_pszRegDesktopShortCut = TEXT("DesktopShortcut");
|
|
|
|
const int ALLUSERS = 0x1;
|
|
const int CREATEDESKTOPICON = 0x10;
|
|
|
|
typedef struct _PresharedKeyPINStruct
|
|
{
|
|
TCHAR szPIN[c_dwMaxPresharedKeyPIN + 1];
|
|
} PresharedKeyPINStruct;
|
|
|
|
//
|
|
// Internal Functions (Used by other functions in the file)
|
|
//
|
|
void DeleteNT5ShortcutFromPathAndNameW(HINSTANCE hInstance, LPCWSTR szwProfileName, int nFolder);
|
|
void DeleteNT5ShortcutFromPathAndNameA(HINSTANCE hInstance, LPCSTR szProfileName, int nFolder);
|
|
|
|
//
|
|
// Functions
|
|
//
|
|
BOOL RemovePhonebookEntry(LPCTSTR pszEntryName, LPTSTR pszPhonebook, BOOL bMatchSimilarEntries);
|
|
BOOL RemoveSpecificPhoneBookEntry(LPCTSTR szLongServiceName, LPTSTR pszPhonebook);
|
|
HRESULT CreateNT5ProfileShortcut(LPCTSTR pszProfileName, LPCTSTR pszPhoneBook, BOOL bAllUsers);
|
|
BOOL WriteCmPhonebookEntry(LPCTSTR szLongServiceName, LPCTSTR szFullPathtoPBK, LPCTSTR pszCmsFile);
|
|
BOOL GetRasModems(LPRASDEVINFO *pprdiRasDevInfo, LPDWORD pdwCnt);
|
|
BOOL PickModem(LPTSTR pszDeviceType, LPTSTR pszDeviceName, BOOL fUseVpnDevice);
|
|
BOOL IsAdmin(void);
|
|
BOOL IsAuthenticatedUser(void);
|
|
HRESULT HrIsCMProfilePrivate(LPCTSTR szPhonebook);
|
|
HRESULT GetNT5FolderPath(int nFolder, OUT LPTSTR lpszPath);
|
|
void RefreshDesktop(void);
|
|
BOOL GetAllUsersCmDir(LPTSTR pszDir, HINSTANCE hInstance);
|
|
LPTSTR GetPrivateCmUserDir(LPTSTR pszDir, HINSTANCE hInstance);
|
|
HRESULT HrRegDeleteKeyTree (HKEY hkeyParent, LPCTSTR szRemoveKey);
|
|
HRESULT LaunchProfile(LPCTSTR pszFullPathToCmpFile, LPCTSTR pszServiceName,
|
|
LPCTSTR pszPhoneBook, BOOL bInstallForAllUsers);
|
|
BOOL AllUserProfilesInstalled();
|
|
BOOL GetPhoneBookPath(LPCTSTR pszInstallDir, LPTSTR* ppszPhoneBook, BOOL fAllUser);
|
|
void RemoveShowIconFromRunPostSetupCommands(LPCTSTR szInfFile);
|
|
BOOL GetHiddenPhoneBookPath(LPCTSTR pszProfileDir, LPTSTR* ppszPhonebook);
|
|
|
|
BOOL GetRasApis(pfnRasDeleteEntrySpec* pRasDeleteEntry, pfnRasEnumEntriesSpec* pRasEnumEntries,
|
|
pfnRasSetEntryPropertiesSpec* pRasSetEntryProperties,
|
|
pfnRasEnumDevicesSpec* pRasEnumDevices, pfnRasGetEntryPropertiesSpec* pRasGetEntryProperties,
|
|
pfnRasSetCredentialsSpec* pRasSetCredentials);
|
|
|
|
BOOL GetShell32Apis(pfnSHGetFolderPathSpec* pGetFolderPath,
|
|
pfnSHGetSpecialFolderPathWSpec* pGetSpecialFolderPathW);
|
|
|
|
BOOL GetNetShellApis(pfnLaunchConnectionSpec* pLaunchConnection,
|
|
pfnCreateShortcutSpec* pCreateShortcut,
|
|
pfnLaunchConnectionExSpec* pLaunchConnectionEx);
|
|
|
|
//
|
|
// Defines
|
|
//
|
|
#ifdef UNICODE
|
|
#define DeleteNT5ShortcutFromPathAndName DeleteNT5ShortcutFromPathAndNameW
|
|
#else
|
|
#define DeleteNT5ShortcutFromPathAndName DeleteNT5ShortcutFromPathAndNameA
|
|
#endif
|
|
|
|
//
|
|
// Externs -- these are defined in cmstp.cpp and allow us to use EnsureRasDllsLoaded and
|
|
// EnsureShell32Loaded so that we only load the Ras Dll's and Shell32 once per
|
|
// run of the exe.
|
|
//
|
|
extern CDynamicLibrary* g_pRasApi32;
|
|
extern CDynamicLibrary* g_pRnaph;
|
|
extern CDynamicLibrary* g_pShell32;
|
|
extern CDynamicLibrary* g_pNetShell;
|
|
|
|
|
|
#endif //_CMSTP_COMMON_H
|
|
|