⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registry.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/*
 * 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 + -