📄 settings.cpp
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include "Settings.h"
#include "string.hxx"
#include "DebugMsg.h"
#include "includes.h"
const WCHAR c_wszHttpRegPath [] = L"Software\\Microsoft\\OWAExchangeClient\\HttpParams";
const WCHAR c_wszParseRegPath[] = L"Software\\Microsoft\\OWAExchangeClient\\ParseParams";
const WCHAR c_wszContactsBodyStartFmt[] = \
L"<?xml version=\"1.0\"?>" \
L"<g:searchrequest " \
L"xmlns:g=\"DAV:\" " \
L">" \
L"<g:sql>" \
L" Select \"urn:schemas:contacts:fileas\"," \
L"\"urn:schemas:contacts:homePhone\"," \
L"\"urn:schemas:contacts:telephoneNumber\"," \
L"\"urn:schemas:contacts:mobile\"," \
L"\"urn:schemas:contacts:email1\"," \
L"\"urn:schemas:contacts:homepostaladdress\"," \
L"\"urn:schemas:contacts:workaddress\"" \
L"FROM Scope('DEEP TRAVERSAL OF \"/exchange/%s/contacts/\"') " \
L"WHERE \"DAV:contentclass\" = 'urn:content-classes:person' ";
const WCHAR c_wszContactsBodyFilterFNFmt[] = \
L" AND \"urn:schemas:contacts:givenName\" LIKE '%s%%' ";
const WCHAR c_wszContactsBodyFilterLNFmt[] = \
L" AND \"urn:schemas:contacts:sn\" LIKE '%s%%' ";
const WCHAR c_wszContactsBodyEndFmt[] = \
L"ORDER BY \"urn:schemas:contacts:fileas\""
L"</>" \
L"</>";
const OWAClientSetting c_SettingContactsUrlFmt (c_wszHttpRegPath , L"ContactsUrlFmt" ,L"%s/exchange/%s/contacts" );
const OWAClientSetting c_SettingContactsMethod (c_wszHttpRegPath , L"ContactsMethod" ,L"SEARCH" );
const OWAClientSetting c_SettingContactsBodyStartFmt (c_wszHttpRegPath , L"ContactsBodyStartFmt" ,c_wszContactsBodyStartFmt );
const OWAClientSetting c_SettingContactsBodyEndFmt (c_wszHttpRegPath , L"ContactsBodyEndFmt" ,c_wszContactsBodyEndFmt );
const OWAClientSetting c_SettingContactsBodyFilterFNFmt(c_wszHttpRegPath , L"ContactsBodyFNFmt" ,c_wszContactsBodyFilterFNFmt);
const OWAClientSetting c_SettingContactsBodyFilterLNFmt(c_wszHttpRegPath , L"ContactsBodyLNFmt" ,c_wszContactsBodyFilterLNFmt);
const OWAClientSetting c_SettingGALUrlFmt (c_wszHttpRegPath , L"GALUrlFmt" ,L"%s/exchange/?cmd=galfind");
const OWAClientSetting c_SettingGALMethod (c_wszHttpRegPath , L"GALMethod" ,L"GET" );
const OWAClientSetting c_SettingGALBodyFmt (c_wszHttpRegPath , L"GALBodyFmt" ,L"" );
const OWAClientSetting c_SettingGALAppendAlias (c_wszHttpRegPath , L"GALAppendAlias" ,L"&AN=");
const OWAClientSetting c_SettingGALAppendFirstName(c_wszHttpRegPath, L"GALAppendFN" ,L"&FN=");
const OWAClientSetting c_SettingGALAppendLastName (c_wszHttpRegPath, L"GALAppendLN" ,L"&LN=");
const OWAClientSetting c_SettingFBSUrlFmt (c_wszHttpRegPath , L"FBSUrlFmt" ,L"%s/public/?cmd=freebusy");
const OWAClientSetting c_SettingFBSMethod (c_wszHttpRegPath , L"FBSMethod" ,L"GET" );
const OWAClientSetting c_SettingFBSSearchLength (c_wszHttpRegPath , L"FBSSearchLength" ,L"12" );
const OWAClientSetting c_SettingFBSBodyFmt (c_wszHttpRegPath , L"FBSBodyFmt" ,L"" );
const OWAClientSetting c_SettingFBSIntervalLength(c_wszHttpRegPath , L"FBSInterval" ,L"15");
const OWAClientSetting c_SettingAuthUrlFmt (c_wszHttpRegPath , L"AuthUrlFmt" ,L"%s/exchweb/bin/auth/owaauth.dll" );
const OWAClientSetting c_SettingAuthMethod (c_wszHttpRegPath , L"AuthMethod" ,L"POST" );
const OWAClientSetting c_SettingAuthBodyFmt (c_wszHttpRegPath , L"AuthBodyFmt" ,L"destination=%s/exchange/&flags=2&username=%s&password=%s&forcedownlevel=0&trusted=0" );
const OWAClientSetting c_SettingAuthLoginPageGUID(c_wszParseRegPath, L"OWALoginPageGUID",L"{57A118C6-2DA9-419d-BE9A-F92B0F9A418B}");
const OWAClientSetting c_SettingContactsDispName (c_wszParseRegPath, L"ContactsDispName" ,L"fileas");
const OWAClientSetting c_SettingContactsWorkPhone(c_wszParseRegPath, L"ContactsWorkPhone" ,L"telephonenumber");
const OWAClientSetting c_SettingContactsHomePhone(c_wszParseRegPath, L"ContactsHomePhone" ,L"homephone");
const OWAClientSetting c_SettingContactsMobile (c_wszParseRegPath, L"ContactsMobile" ,L"mobile");
const OWAClientSetting c_SettingContactsEmail (c_wszParseRegPath, L"ContactsEmail" ,L"email1");
const OWAClientSetting c_SettingContactsHomeAddr (c_wszParseRegPath, L"ContactsHomeAddr" ,L"homepostaladdress");
const OWAClientSetting c_SettingContactsWorkAddr (c_wszParseRegPath, L"ContactsWorkAddr" ,L"workaddress");
const OWAClientSetting c_SettingContactsNewDataRecord(c_wszParseRegPath, L"ContactsNewDataRecord" ,L"response");
const OWAClientSetting c_SettingGALDispName (c_wszParseRegPath, L"GALDispName" , L"DN");
const OWAClientSetting c_SettingGALAlias (c_wszParseRegPath, L"GALAlias" , L"AN");
const OWAClientSetting c_SettingGALOffice (c_wszParseRegPath, L"GALOffice" , L"OF");
const OWAClientSetting c_SettingGALPhone (c_wszParseRegPath, L"GALPhone" , L"PH");
const OWAClientSetting c_SettingGALSMTP (c_wszParseRegPath, L"GALSMTP" , L"EM");
const OWAClientSetting c_SettingGALNewDataRecord (c_wszParseRegPath, L"GALDataRecord" , L"item");
const OWAClientSetting c_SettingFBDEmailAddress (c_wszParseRegPath, L"FBDEmailAddr", L"email");
const OWAClientSetting c_SettingFBDDispName (c_wszParseRegPath, L"FBDDispName" , L"displayname");
const OWAClientSetting c_SettingFBDFreeBusy (c_wszParseRegPath, L"FBDFreeBusy" , L"fbdata");
const OWAClientSetting c_SettingFBDNewDataRecord (c_wszParseRegPath, L"FBDNewDataRecord", L"item");
const OWAClientSetting c_SettingContactsAdditionalHeaderName (c_wszHttpRegPath, L"ContactsAddHeaderName" , L"Content-Type");
const OWAClientSetting c_SettingContactsAdditionalHeaderValue (c_wszHttpRegPath, L"ContactsAddHeaderValue", L"text/xml" );
const OWAClientSetting c_SettingGALAdditionalHeaderName (c_wszHttpRegPath, L"GALAddHeaderName" , L"User-Agent");
const OWAClientSetting c_SettingGALAdditionalHeaderValue (c_wszHttpRegPath, L"GALAddHeaderValue" , L"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)");
const OWAClientSetting c_SettingFBSAdditionalHeaderName (c_wszHttpRegPath, L"FBDAddHeaderName" , L"User-Agent" );
const OWAClientSetting c_SettingFBSAdditionalHeaderValue (c_wszHttpRegPath, L"FBDAddHeaderValue" , L"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)");
const OWAClientSetting c_SettingLocaleName (c_wszHttpRegPath, L"LocaleLanguageName" , L"Accept-Language");
const OWAClientSetting c_SettingLocaleDefaultValue(c_wszHttpRegPath, L"LocaleLanguageValue", L"en-us");
const OWAClientSetting* g_OWAClientSettings[] =
{
&c_SettingContactsUrlFmt,
&c_SettingContactsMethod,
&c_SettingContactsBodyStartFmt,
&c_SettingContactsBodyEndFmt,
&c_SettingContactsBodyFilterFNFmt,
&c_SettingContactsBodyFilterLNFmt,
&c_SettingGALUrlFmt ,
&c_SettingGALMethod ,
&c_SettingGALBodyFmt,
&c_SettingGALAppendAlias,
&c_SettingGALAppendFirstName,
&c_SettingGALAppendLastName,
&c_SettingFBSUrlFmt ,
&c_SettingFBSMethod ,
&c_SettingFBSSearchLength,
&c_SettingFBSBodyFmt,
&c_SettingFBSIntervalLength,
&c_SettingAuthUrlFmt,
&c_SettingAuthMethod,
&c_SettingAuthBodyFmt,
&c_SettingAuthLoginPageGUID,
&c_SettingContactsDispName,
&c_SettingContactsWorkPhone,
&c_SettingContactsHomePhone,
&c_SettingContactsMobile,
&c_SettingContactsEmail,
&c_SettingContactsHomeAddr,
&c_SettingContactsWorkAddr,
&c_SettingContactsNewDataRecord,
&c_SettingGALDispName ,
&c_SettingGALAlias ,
&c_SettingGALOffice ,
&c_SettingGALPhone ,
&c_SettingGALSMTP ,
&c_SettingGALNewDataRecord,
&c_SettingFBDEmailAddress,
&c_SettingFBDDispName ,
&c_SettingFBDFreeBusy ,
&c_SettingFBDNewDataRecord,
&c_SettingContactsAdditionalHeaderName ,
&c_SettingContactsAdditionalHeaderValue,
&c_SettingGALAdditionalHeaderName ,
&c_SettingGALAdditionalHeaderValue ,
&c_SettingFBSAdditionalHeaderName ,
&c_SettingFBSAdditionalHeaderValue ,
&c_SettingLocaleName ,
&c_SettingLocaleDefaultValue,
NULL
};
/*------------------------------------------------------------------------------
OWAClientSetting::Initialize
Static method to initialize all the Settings from the registry
------------------------------------------------------------------------------*/
/* static */ HRESULT OWAClientSetting::Initialize()
{
HRESULT hr = S_OK;
INT i = 0;
while (g_OWAClientSettings[i] != NULL)
{
hr = ((OWAClientSetting*)g_OWAClientSettings[i])->Load();
ASSERT(SUCCEEDED(hr));
i++;
}
return S_OK;
}
/*------------------------------------------------------------------------------
OWAClientSetting::Load
Load a settings' value from the registry (if it exists). Otherwise, store the default
in the registry for next time.
------------------------------------------------------------------------------*/
HRESULT OWAClientSetting::Load()
{
DWORD dwErr = 0;
HKEY hkey = NULL;
WCHAR wszData[MAX_PATH] = L"";
DWORD dwData = ARRAYSIZE(wszData);
BOOL fOK = TRUE;
dwErr = RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
m_wszRegKeyPath,
0,
0,
&hkey
);
if (dwErr == ERROR_SUCCESS)
{
dwErr = RegQueryValueEx(
hkey,
m_wszValueName,
NULL,
NULL,
(BYTE*)wszData,
&dwData
);
NULL_TERMINATE_ARRAY(wszData);
}
if (dwErr == ERROR_SUCCESS)
{
fOK = m_wstrVal.assign(wszData);
}
else
{
DEBUGMSG(ZONE_OWAEC_TRACING_INFORMATIONAL, (L"OWAEC: RegKey %s\\%s was not found in the registry (dec err code %d)", m_wszRegKeyPath, m_wszValueName, dwErr));
fOK = m_wstrVal.assign(m_wszDefaultData);
(VOID)Store();
}
RegCloseKey(hkey);
return (fOK) ? S_OK : E_OUTOFMEMORY;
}
/*------------------------------------------------------------------------------
OWAClientSetting::Store
Store the settings' default value in the registry
------------------------------------------------------------------------------*/
HRESULT OWAClientSetting::Store()
{
DWORD dwErr = 0;
HKEY hkey = NULL;
WCHAR wszData[MAX_PATH] = L"";
DWORD dwData = ARRAYSIZE(wszData);
dwErr = RegCreateKeyEx(
HKEY_LOCAL_MACHINE,
m_wszRegKeyPath,
0,
NULL,
0,
0,
NULL,
&hkey,
NULL
);
if (dwErr == ERROR_SUCCESS)
{
dwErr = RegSetValueEx(
hkey,
m_wszValueName,
0,
REG_SZ,
(BYTE*)m_wszDefaultData,
sizeof(WCHAR) * wcslen(m_wszDefaultData)
);
}
RegCloseKey(hkey);
return (dwErr == ERROR_SUCCESS) ? S_OK : HRESULT_FROM_WIN32(dwErr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -