236 lines
9.6 KiB
C
236 lines
9.6 KiB
C
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1998.
|
|
//
|
|
// File: Reg.h
|
|
//
|
|
// Contents: Registration routines
|
|
//
|
|
// Classes:
|
|
//
|
|
// Notes:
|
|
//
|
|
// History: 05-Nov-97 rogerg Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef _CONESTOPREGISTER_
|
|
#define _CONESTOPREGISTER_
|
|
|
|
#include "rasui.h" // included so exe can inlude dll.reg.
|
|
|
|
#define GUID_SIZE 128
|
|
#define MAX_STRING_LENGTH 256
|
|
|
|
typedef
|
|
enum _tagSYNCTYPE
|
|
{
|
|
SYNCTYPE_MANUAL = 0x1,
|
|
SYNCTYPE_AUTOSYNC = 0x2,
|
|
SYNCTYPE_IDLE = 0x3,
|
|
SYNCTYPE_SCHEDULED = 0x4,
|
|
SYNCTYPE_PROGRESS = 0x5
|
|
} SYNCTYPE;
|
|
|
|
|
|
EXTERN_C void WINAPI RunDllRegister(HWND hwnd,
|
|
HINSTANCE hAppInstance,
|
|
LPSTR pszCmdLine,
|
|
int nCmdShow);
|
|
|
|
|
|
#define UL_DEFAULTIDLEWAITMINUTES 15
|
|
#define UL_DEFAULTIDLERETRYMINUTES 60
|
|
#define UL_DELAYIDLESHUTDOWNTIME 2*1000 // time in milliseconds
|
|
#define UL_DEFAULTWAITMINUTES 15
|
|
#define UL_DEFAULTREPEATSYNCHRONIZATION 1
|
|
#define UL_DEFAULTFRUNONBATTERIES 0
|
|
|
|
typedef struct _CONNECTIONSETTINGS {
|
|
TCHAR pszConnectionName[RAS_MaxEntryName + 1]; //The connection
|
|
DWORD dwConnType;
|
|
// DWORD dwSyncFlags;
|
|
// For optimization: these are currently all BOOL,
|
|
//the first three are used exclusively for autosync,
|
|
//and dwMakeConnection is used exclusively for sched sync.
|
|
//Consider using bitfields and/or a union to consolidate space.
|
|
|
|
// AutoSync settings
|
|
DWORD dwLogon; //Autosync at logon
|
|
DWORD dwLogoff; //Autosync at logoff
|
|
DWORD dwPromptMeFirst; //Prompt the user first before autosyncing
|
|
|
|
// Schedule settings.
|
|
DWORD dwMakeConnection; //Automatically try to establish the connection
|
|
|
|
// Idle Settings
|
|
DWORD dwIdleEnabled; // Idle is enabled on this connection
|
|
|
|
// Idle Settings that are really not per connection but read in for
|
|
// convenience. These are currently never written.
|
|
ULONG ulIdleWaitMinutes; // number of minutes to wait after idle to start idle processing.
|
|
ULONG ulIdleRetryMinutes; // number of minutes for Idle before retry.
|
|
ULONG ulDelayIdleShutDownTime; // time to delay shutdown of idle in milliseconds
|
|
DWORD dwRepeatSynchronization; // indicates synchronization should be repeated
|
|
DWORD dwRunOnBatteries; // indicates whether to run on batteries or not.
|
|
DWORD dwHidden; //Hide the schedule from the user because this is a publishers sched.
|
|
DWORD dwReadOnly; //Schedule info is readonly
|
|
|
|
} CONNECTIONSETTINGS;
|
|
|
|
typedef CONNECTIONSETTINGS *LPCONNECTIONSETTINGS;
|
|
|
|
|
|
STDAPI_(BOOL) AddRegNamedValue(HKEY hkey,LPTSTR pszKey,LPTSTR pszSubkey,LPTSTR pszValueName,LPTSTR pszValue);
|
|
STDAPI_(BOOL) RegLookupSettings(HKEY hKeyUser,
|
|
CLSID clsidHandler,
|
|
SYNCMGRITEMID ItemID,
|
|
const TCHAR *pszConnectionName,
|
|
DWORD *pdwCheckState);
|
|
|
|
STDAPI_(BOOL) RegWriteOutSettings(HKEY hKeyUser,
|
|
CLSID clsidHandler,
|
|
SYNCMGRITEMID ItemID,
|
|
const TCHAR *pszConnectionName,
|
|
DWORD dwCheckState);
|
|
|
|
STDAPI_(BOOL) RegGetSyncItemSettings(DWORD dwSyncType,
|
|
CLSID clsidHandler,
|
|
SYNCMGRITEMID ItemId,
|
|
const TCHAR *pszConnectionName,
|
|
DWORD *pdwCheckState,
|
|
DWORD dwDefaultCheckState,
|
|
TCHAR *pszSchedName);
|
|
|
|
STDAPI_(BOOL) RegSetSyncItemSettings(DWORD dwSyncType,
|
|
CLSID clsidHandler,
|
|
SYNCMGRITEMID ItemId,
|
|
const TCHAR *pszConnectionName,
|
|
DWORD dwCheckState,
|
|
TCHAR *pszSchedName);
|
|
|
|
STDAPI_(BOOL) RegSetSyncHandlerSettings(DWORD syncType,
|
|
const TCHAR *pszConnectionName,
|
|
CLSID clsidHandler,
|
|
BOOL fItemsChecked);
|
|
|
|
STDAPI_(BOOL) RegQueryLoadHandlerOnEvent(TCHAR *pszClsid,DWORD dwSyncFlags,
|
|
TCHAR *pConnectionName);
|
|
|
|
|
|
//Progress dialog preference
|
|
STDAPI_(BOOL) RegGetProgressDetailsState(REFCLSID clsidDlg,BOOL *pfPushPin, BOOL *pfExpanded);
|
|
STDAPI_(BOOL) RegSetProgressDetailsState(REFCLSID clsidDlg,BOOL fPushPin, BOOL fExpanded);
|
|
|
|
//Autosync reg functions
|
|
STDAPI_(BOOL) RegGetAutoSyncSettings(LPCONNECTIONSETTINGS lpConnectionSettings);
|
|
STDAPI_(BOOL) RegSetAutoSyncSettings(LPCONNECTIONSETTINGS lpConnectionSettings,
|
|
int iNumConnections,
|
|
CRasUI *pRas,
|
|
BOOL fCleanReg,
|
|
BOOL fSetMachineState,
|
|
BOOL fPerUser);
|
|
|
|
// Idle reg functions
|
|
STDAPI_(BOOL) RegGetIdleSyncSettings(LPCONNECTIONSETTINGS lpConnectionSettings);
|
|
STDAPI_(BOOL) RegSetIdleSyncSettings(LPCONNECTIONSETTINGS lpConnectionSettings,
|
|
int iNumConnections,
|
|
CRasUI *pRas,
|
|
BOOL fCleanReg,
|
|
BOOL fPerUser);
|
|
STDAPI_(BOOL) RegRegisterForIdleTrigger(BOOL fRegister,ULONG ulWaitMinutes,BOOL fRunOnBatteries);
|
|
|
|
|
|
// function for exporting settings for exe
|
|
STDAPI_(BOOL) RegGetSyncSettings(DWORD dwSyncType,LPCONNECTIONSETTINGS lpConnectionSettings);
|
|
|
|
//Scheduled Sync reg functions
|
|
STDAPI_(BOOL) RegSchedHandlerItemsChecked(TCHAR *pszHandlerName,
|
|
TCHAR *pszConnectionName,
|
|
TCHAR *pszScheduleName);
|
|
STDAPI_(BOOL) RegGetSchedSyncSettings( LPCONNECTIONSETTINGS lpConnectionSettings,TCHAR *pszSchedName);
|
|
STDAPI_(BOOL) RegSetSchedSyncSettings( LPCONNECTIONSETTINGS lpConnectionSettings,TCHAR *pszSchedName);
|
|
STDAPI_(BOOL) RegGetSchedFriendlyName(LPCTSTR ptszScheduleGUIDName,
|
|
LPTSTR ptstrFriendlyName);
|
|
STDAPI_(BOOL) RegSetSchedFriendlyName(LPCTSTR ptszScheduleGUIDName,
|
|
LPCTSTR ptstrFriendlyName);
|
|
STDAPI_(BOOL) RegGetSchedConnectionName(TCHAR *pszSchedName,
|
|
TCHAR *pszConnectionName,
|
|
DWORD cbConnectionName);
|
|
STDAPI_(BOOL) RegSetSIDForSchedule(TCHAR *pszSchedName);
|
|
STDAPI_(BOOL) RegGetSIDForSchedule(TCHAR *ptszTextualSidSched,
|
|
DWORD *dwSizeSid,
|
|
TCHAR *pszSchedName);
|
|
|
|
|
|
STDAPI_(BOOL) RegRemoveScheduledTask(TCHAR *pszTaskName);
|
|
STDAPI_(BOOL) RemoveScheduledJobFile(TCHAR *pszTaskName);
|
|
|
|
STDAPI_(BOOL) RegRegisterForScheduledTasks(BOOL fScheduled);
|
|
STDAPI_(BOOL) RegUninstallSchedules();
|
|
STDAPI_(BOOL) RegFixRunKey();
|
|
|
|
STDAPI_(DWORD) RegDeleteKeyNT(HKEY hStartKey , LPCWSTR pKeyName);
|
|
|
|
// Manual settings
|
|
STDAPI_(BOOL) RegRemoveManualSyncSettings(TCHAR *pszConnectionName);
|
|
|
|
|
|
// Handler Registration Functions.
|
|
STDAPI_(BOOL) RegRegisterHandler(REFCLSID rclsidHandler,
|
|
WCHAR const *pwszDescription,
|
|
DWORD dwSyncMgrRegisterFlags,
|
|
BOOL *pfFirstRegistration);
|
|
STDAPI_(BOOL) RegRegRemoveHandler(REFCLSID rclsidHandler);
|
|
STDAPI_(BOOL) RegGetHandlerRegistrationInfo(REFCLSID rclsidHandler,LPDWORD pdwSyncMgrRegisterFlags);
|
|
STDAPI_(void) RegSetUserDefaults();
|
|
STDAPI_(void) RegSetAutoSyncDefaults(BOOL fLogon,BOOL fLogoff);
|
|
STDAPI_(void) RegSetIdleSyncDefaults(BOOL fIdle);
|
|
|
|
STDAPI RegSetUserAutoSyncDefaults(DWORD dwSyncMgrRegisterMask,
|
|
DWORD dwSyncMgrRegisterFlags);
|
|
STDAPI RegSetUserIdleSyncDefaults(DWORD dwSyncMgrRegisterMask,
|
|
DWORD dwSyncMgrRegisterFlags);
|
|
STDAPI RegGetUserRegisterFlags(LPDWORD pdwSyncMgrRegisterFlags);
|
|
|
|
STDAPI_(BOOL) RegWriteTimeStamp(HKEY hkey);
|
|
STDAPI_(BOOL) RegGetTimeStamp(HKEY hKey, FILETIME *pft);
|
|
STDAPI_(void) RegUpdateTopLevelKeys();
|
|
|
|
// common registry functions.
|
|
|
|
|
|
STDAPI_(HKEY) RegOpenUserKey(HKEY hkeyParent,REGSAM samDesired,BOOL fCreate,BOOL fCleanReg);
|
|
STDAPI_(HKEY) RegGetSyncTypeKey(DWORD dwSyncType,REGSAM samDesired,BOOL fCreate);
|
|
STDAPI_(HKEY) RegGetCurrentUserKey(DWORD dwSyncType,REGSAM samDesired,BOOL fCreate);
|
|
|
|
STDAPI_(HKEY) RegGetHandlerTopLevelKey(REGSAM samDesired);
|
|
STDAPI_(HKEY) RegGetHandlerKey(HKEY hkeyParent,LPCWSTR pszHandlerClsid,REGSAM samDesired,BOOL fCreate);
|
|
|
|
// EventService/Winlogon Registration
|
|
|
|
#if 0
|
|
// define regkeys for WinLogon Registration
|
|
// WinLogon is registered undler HKLM
|
|
#define WINLOGON_NOTIFY "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\notify"
|
|
#define WINLOGON_SYNCMGRDLLNAME "syncmgrp.dll"
|
|
|
|
#define WINLOGON_LOGONVALUE TEXT("StartShell")
|
|
#define WINLOGON_LOGOFFVALUE TEXT("Logoff")
|
|
#define WINLOGON_DLLNAMEVALUE TEXT("DllName")
|
|
|
|
#define WINLOGON_LOGONEXPORT TEXT("WinLogonEvent")
|
|
#define WINLOGON_LOGOFFEXPORT TEXT("WinLogoffEvent")
|
|
|
|
#define WINLOGON_NOTIFYKEYNAME TEXT(WINLOGON_NOTIFY)
|
|
#define WINLOGON_SYNCMGRNOTIFYKEYNAME TEXT(WINLOGON_SYNCMGRDLLNAME)
|
|
#define WINLOGON_SYNCMGRKEYFULLPATH TEXT(WINLOGON_NOTIFY##"\\"##WINLOGON_SYNCMGRDLLNAME)
|
|
|
|
#endif
|
|
|
|
STDAPI RegRegisterForEvents(BOOL fUninstall);
|
|
|
|
#endif // _CONESTOPREGISTER_
|
|
|