📄 registry.cpp
字号:
/*
* Copyright (C) 2003-2007 Funambol, Inc
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY, TITLE, NONINFRINGEMENT or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/
#include "stdafx.h"
#include <cfgmgrapi.h>
#include "Tlhelp32.h"
#include "mail.h"
#include "registry.h"
#include "Winbase.h" //-- for createProcess
#include "winreg.h" //-- for registry key reading
#ifdef IS_PORTAL_VERSION
#define USERNAME TEXT("")
#define PASSWORD TEXT("")
#define SERVER_URL TEXT("http://my.funambol.com/sync")
#define IS_PORTAL TEXT("1")
#define COMPRESSION TEXT("1")
#else
#define USERNAME TEXT("guest")
#define PASSWORD TEXT("guest")
#define SERVER_URL TEXT("http://<server name>:<port>/funambol/ds")
#define IS_PORTAL TEXT("0")
#define COMPRESSION TEXT("1")
#endif
wchar_t* getMyDocumentFolder();
const wchar_t* getAppName(){
return PROGRAM_DIR;
}
wchar_t* rpath = NULL;
const wchar_t* getFullReg(wchar_t* val){
if (rpath){
delete[] rpath;
rpath = NULL;
}
int dim = wcslen(val) + wcslen(getAppName()) + 1;
rpath = new wchar_t[dim];
wsprintf(rpath,val,getAppName());
return rpath;
}
static size_t getLenEncoding(const WCHAR* s)
{
if (!s)
return 0;
int len = wcslen(s);
if (!len)
return 0;
long k = WideCharToMultiByte (CP_UTF8, 0, s, len, 0, 0, 0, 0);
return (k != 0) ? (long)k : -1;
}
char* toMultibyte(const WCHAR *wc)
{
if (!wc) {
return 0;
}
char *ret;
size_t wlen = wcslen(wc);
if (!wlen) {
ret = new char[1];
ret[0] = 0;
return ret;
}
size_t blen = getLenEncoding(wc);
if(blen <= 0)
return 0;
ret = new char[blen+1];
blen = WideCharToMultiByte(CP_UTF8, 0, wc, wlen, ret, blen, 0, 0);
ret[blen] = 0;
return ret;
}
void deleteSyncmlTransportRegistry() {
RegDeleteKey(HKEY_LOCAL_MACHINE,getFullReg( TEXT("SOFTWARE\\Microsoft\\Inbox\\Svc\\%s")));
}
void deleteAllRegistry() {
RegDeleteKey(HKEY_LOCAL_MACHINE,getFullReg( TEXT("SOFTWARE\\%s")));
}
void deleteSyncmlTree() {
RegDeleteKey(HKEY_LOCAL_MACHINE,getFullReg( TEXT("SOFTWARE\\%s\\SyncclientPIM\\spds\\syncml")));
}
void deleteVersion30RegistryValues() {
HKEY key = NULL;
DWORD res;
bool ret = false;
res = RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
getFullReg( TEXT("Software\\%s\\SyncclientPIM")),
0,
NULL,
&key
);
if (res == ERROR_SUCCESS) {
RegDeleteValue(key, TEXT("logLevel"));
}
if (key != 0) {
RegCloseKey(key);
}
}
void getJustInsertedRegistry() {
wchar_t* value = NULL;
value = readPropertyValue(getFullReg( TEXT("Software\\%s\\SyncclientPIM")), TEXT("path"));
setPropertyValue(TEXT("SyncclientPIM"), TEXT("path"), value, true);
if (value) { delete [] value; value = NULL; }
value = readPropertyValue(getFullReg( TEXT("Software\\%s\\SyncclientPIM")), TEXT("pluginVersion"));
setPropertyValue(TEXT("SyncclientPIM"), TEXT("pluginVersion"), value, true);
if (value) { delete [] value; value = NULL; }
value = readPropertyValue(getFullReg( TEXT("Software\\%s\\SyncclientPIM\\spds\\syncml\\Conn")), TEXT("userAgent"));
setPropertyValue(TEXT("SyncclientPIM\\spds\\syncml\\Conn"), TEXT("userAgent"), value, true);
if (value) { delete [] value; value = NULL; }
}
void createSyncmlTransportRegistry()
{
HKEY key = NULL;
DWORD res;
//wchar_t port [256];
//wchar_t name [256];
//wchar_t dll [256];
//wcscpy(port, TEXT("SOFTWARE\\Microsoft\\Inbox\\Svc\\%s\\Port"));
//wcscpy(name, TEXT("SOFTWARE\\Microsoft\\Inbox\\Svc\\%s\\Name"));
//wcscpy(dll, TEXT("SOFTWARE\\Microsoft\\Inbox\\Svc\\%s\\DLL"));
const wchar_t portValue[] = TEXT("0");
wchar_t* nameValue=new wchar_t[wcslen(getFullReg( TEXT("%s")))];
wcscpy(nameValue, getFullReg( TEXT("%s")));
const wchar_t DLLValue[] = TEXT("syncmltransport.dll");
RegCreateKeyEx(
HKEY_LOCAL_MACHINE,
getFullReg( TEXT("SOFTWARE\\Microsoft\\Inbox\\Svc\\%s")),
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&key,
&res
);
if (key == 0) {
goto finally;
}
RegSetValueEx( key, TEXT("port"), 0,
REG_SZ, // we currently support only strings
(UCHAR*)portValue, (wcslen(portValue)+1)*sizeof(WCHAR) );
RegSetValueEx(key, TEXT("Name"), 0,
REG_SZ, // we currently support only strings
(UCHAR*)nameValue, (wcslen(nameValue)+1)*sizeof(WCHAR) );
RegSetValueEx(key, TEXT("DLL"), 0,
REG_SZ, // we currently support only strings
(UCHAR*)DLLValue,(wcslen(DLLValue)+1)*sizeof(WCHAR) );
//
// To create the UserCannotCreate property. Currently not supported
//
/*
RegSetValueEx(
key,
TEXT("UserCannotCreate"),
0,
REG_DWORD, // we currently support only strings
(UCHAR*)TEXT("1"),
(wcslen(TEXT("1"))+1)*sizeof(wchar_t)
);
*/
RegFlushKey(key);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -