//保存配置 void CInitParamter::SaveInitParamter(bool bSaveAll) { //打开注册表 CRegKey RegParamter; TCHAR szRegName[MAX_PATH]; _snprintf(szRegName,sizeof(szRegName),TEXT("Software\\%s\\CenterServer"),szSystemRegKey); if (RegParamter.Create(HKEY_CURRENT_USER,szRegName)!=ERROR_SUCCESS) return; //变量定义 TCHAR szWriteBuffer[1024]=TEXT(""); //信息数据库 RegParamter.SetDWORDValue(TEXT("ServerDataBasePort"),m_wServerDataBasePort); CXOREncrypt::EncryptData(m_szServerDataBaseAddr,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerDataBaseAddr")); CXOREncrypt::EncryptData(m_szServerDataBaseUser,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerDataBaseUser")); CXOREncrypt::EncryptData(m_szServerDataBasePass,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerDataBasePass")); if (bSaveAll==true) { //网络配置 RegParamter.SetDWORDValue(TEXT("MaxConnect"),m_wMaxConnect); RegParamter.SetDWORDValue(TEXT("ListenPort"),m_wListenPort); //信息数据库 CXOREncrypt::EncryptData(m_szServerDataBaseName,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerDataBaseName")); } return; }
//登录成功处理 bool CDlgLogon::OnLogonSuccess() { //登录配置 BOOL bRemPassword=(((CButton *)GetDlgItem(IDC_REM_PASSWORD))->GetCheck()==BST_CHECKED); AfxGetApp()->WriteProfileInt(REG_OPTION_LOGON,TEXT("LogonMode"),m_LogonMode); AfxGetApp()->WriteProfileString(REG_OPTION_LOGON,TEXT("LogonServer"),m_strLogonServer); //配置信息 if (bRemPassword==FALSE) { if (g_GlobalOption.m_enAcountsRule==enAcountsRule_AccountsAndPass) { g_GlobalOption.m_enAcountsRule=enAcountsRule_Accounts; } } else g_GlobalOption.m_enAcountsRule=enAcountsRule_AccountsAndPass; //用户信息 tagGlobalUserData & UserData=g_GlobalUnits.GetGolbalUserData(); AfxGetApp()->WriteProfileInt(REG_OPTION_LOGON,TEXT("LastUserID"),UserData.dwUserID); //写入用户记录 if (g_GlobalOption.m_enAcountsRule!=enAcountsRule_None) { //构造信息 TCHAR szBuffer[256]; _snprintf(szBuffer,sizeof(szBuffer),TEXT("%s\\%ld"),REG_USER_INFO,UserData.dwUserID); //写入信息 CRegKey RegUserInfo; if (RegUserInfo.Create(HKEY_CURRENT_USER,szBuffer)==ERROR_SUCCESS) { TCHAR szPassBuffer[256]=TEXT(""); if (bRemPassword) CXOREncrypt::EncryptData(m_szPassword,szPassBuffer,CountArray(szPassBuffer)); RegUserInfo.SetKeyValue(TEXT(""),UserData.szAccounts,TEXT("UserAccount")); RegUserInfo.SetKeyValue(TEXT(""),UserData.szPassWord,TEXT("UserPassToken")); RegUserInfo.SetKeyValue(TEXT(""),szPassBuffer,TEXT("UserPassword")); if (UserData.dwGameID!=0L) RegUserInfo.SetDWORDValue(TEXT("GameID"),UserData.dwGameID); } } else { //构造信息 TCHAR szBuffer[256]; _snprintf(szBuffer,sizeof(szBuffer),TEXT("%ld"),UserData.dwUserID); //写入信息 CRegKey RegUserID; if (RegUserID.Open(HKEY_CURRENT_USER,REG_USER_INFO)==ERROR_SUCCESS) RegUserID.RecurseDeleteKey(szBuffer); } //关闭窗口 DestroyWindow(); return true; }
HRESULT DllRegisterServer(BOOL typelib = TRUE) { if (!(GetVersion() & 0x80000000UL)) { CRegKey reg; LONG lRet = reg.Open(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"), KEY_SET_VALUE); if (lRet != ERROR_SUCCESS) return E_ACCESSDENIED; lRet = reg.SetValue(_T("CopyPathnameExt"), _T("{2EECB91C-3E6A-4D08-BDCA-05FB48CCE9F3}")); if (lRet != ERROR_SUCCESS) return E_ACCESSDENIED; } { CRegKey reg; LONG ret = reg.Open(HKEY_CLASSES_ROOT, _T("*\\shellex\\ContextMenuHandlers"), KEY_SET_VALUE | KEY_CREATE_SUB_KEY); if (ret != ERROR_SUCCESS) return E_ACCESSDENIED; ret = reg.SetKeyValue(_T("CopyPathnameExt"), _T("{2EECB91C-3E6A-4D08-BDCA-05FB48CCE9F3}")); if (ret != ERROR_SUCCESS) return E_ACCESSDENIED; } { CRegKey reg; LONG ret = reg.Open(HKEY_CLASSES_ROOT, _T("Directory\\shellex\\ContextMenuHandlers"), KEY_SET_VALUE | KEY_CREATE_SUB_KEY); if (ret != ERROR_SUCCESS) return E_ACCESSDENIED; ret = reg.SetKeyValue(_T("CopyPathnameExt"), _T("{2EECB91C-3E6A-4D08-BDCA-05FB48CCE9F3}")); if (ret != ERROR_SUCCESS) return E_ACCESSDENIED; } return CAtlDllModuleT<CCopyPathnameModule>::DllRegisterServer(typelib); }
//保存配置 void CInitParamter::SaveInitParamter(bool bSaveAll) { //打开注册表 CRegKey RegParamter; TCHAR szRegName[MAX_PATH]; _snprintf(szRegName,sizeof(szRegName),TEXT("Software\\%s\\ServiceLoader"),szSystemRegKey); if (RegParamter.Create(HKEY_CURRENT_USER,szRegName)!=ERROR_SUCCESS) return; //变量定义 TCHAR szWriteBuffer[1024]=TEXT(""); //中心服务器 CXOREncrypt::EncryptData(m_szCenterServerAddr,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("CenterServerAddr")); //授权号码 CXOREncrypt::EncryptData(m_szAccreditID,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("AccreditID")); //登录数据库 RegParamter.SetDWORDValue(TEXT("GameUserDBPort"),m_wGameUserDBPort); CXOREncrypt::EncryptData(m_szGameUserDBAddr,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("GameUserDBAddr")); CXOREncrypt::EncryptData(m_szGameUserDBUser,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("GameUserDBUser")); CXOREncrypt::EncryptData(m_szGameUserDBPass,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("GameUserDBPass")); //房间数据库 RegParamter.SetDWORDValue(TEXT("ServerInfoDBPort"),m_wServerInfoDBPort); CXOREncrypt::EncryptData(m_szServerInfoDBAddr,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerInfoDBAddr")); CXOREncrypt::EncryptData(m_szServerInfoDBUser,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerInfoDBUser")); CXOREncrypt::EncryptData(m_szServerInfoDBPass,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerInfoDBPass")); if (bSaveAll==true) { //登录数据库 CXOREncrypt::EncryptData(m_szServerInfoDBName,szWriteBuffer,sizeof(szWriteBuffer)); RegParamter.SetKeyValue(TEXT(""),szWriteBuffer,TEXT("ServerInfoDBName")); } return; }
void _ATL_OBJMAP_ENTRY::UpdateRegistry(HINSTANCE hInst, HINSTANCE hInstResource) { USES_CONVERSION; TCHAR szDesc[256]; BOOL fStringLoaded = LoadString(hInstResource, nDescID, szDesc, 256); TCHAR szModule[_MAX_PATH]; GetModuleFileName(hInst, szModule, _MAX_PATH); LPOLESTR lpOleStr; StringFromCLSID(*pclsid, &lpOleStr); LPTSTR lpsz = OLE2T(lpOleStr); if (lpszProgID) AtlRegisterProgID(lpsz, lpszProgID, szDesc); if (lpszVerIndProgID) AtlRegisterProgID(lpsz, lpszVerIndProgID, szDesc); // // Would be best if the following checked for errors, but // at least we won't crap out any more 'cause CRegKey now // checks for correct internal state // -rga // CRegKey key; key.Open(HKEY_CLASSES_ROOT, szCLSID); key.Create(key, lpsz); if (dwFlags & CONTROLFLAG) { CRegKey x; x.Create(key, _T("Control")); } if (fStringLoaded) key.SetValue(szDesc); if (lpszProgID) key.SetKeyValue(szProgID, lpszProgID); if (lpszVerIndProgID) key.SetKeyValue(szVIProgID, lpszVerIndProgID); if ((hInst == NULL) || (hInst == GetModuleHandle(NULL))) // register as EXE key.SetKeyValue(szLS32, szModule); else key.SetKeyValue(szIPS32, (dwFlags & AUTPRXFLAG) ? szAUTPRX32:szModule); DWORD dwThreadFlags = dwFlags & 3; if (dwThreadFlags == THREADFLAGS_APARTMENT) key.SetKeyValue(szIPS32, szApartment, szThreadingModel); else if (dwThreadFlags == THREADFLAGS_BOTH) key.SetKeyValue(szIPS32, szBoth, szThreadingModel); CoTaskMemFree(lpOleStr); }
// by exporting DllRegisterServer, you can use regsvr32.exe STDAPI DllRegisterServer(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); HRESULT hRes = S_OK; // Registers object, typelib and all interfaces in typelib hRes = _Module.RegisterServer(TRUE); if (FAILED(hRes)) return hRes; // Register description of this add-in object in its own // "/Description" subkey. // TODO: If you add more add-ins to this module, you need // to register all of their descriptions, each description // in each add-in object's registry CLSID entry: // HKEY_CLASSES_ROOT\Clsid\{add-in CLSID}\Description="add-in description" _ATL_OBJMAP_ENTRY* pEntry = _Module.m_pObjMap; CRegKey key; LONG lRes = key.Open(HKEY_CLASSES_ROOT, _T("CLSID")); if (lRes == ERROR_SUCCESS) { USES_CONVERSION; LPOLESTR lpOleStr; StringFromCLSID(*pEntry->pclsid, &lpOleStr); LPTSTR lpsz = OLE2T(lpOleStr); lRes = key.Open(key, lpsz); if (lRes == ERROR_SUCCESS) { CString strDescription; strDescription.LoadString(IDS_SS_LOG_ADDIN_DESCRIPTION); key.SetKeyValue(_T("Description"), strDescription); } CoTaskMemFree(lpOleStr); } if (lRes != ERROR_SUCCESS) hRes = HRESULT_FROM_WIN32(lRes); return hRes; }
void CWinAppSingle::RegisterShellFileTypesEx( BOOL bCompat /*FALSE*/, BOOL bRegister /*TRUE*/ ) { // Register all application document types: if( bRegister == TRUE ) CWinApp::RegisterShellFileTypes( bCompat ); // Now register SDI document dde open. // Loop through the document templates: POSITION pos = GetFirstDocTemplatePosition(); while( pos != NULL ) { CString strFileTypeId( _T("") ); CDocTemplate* pTemplate = GetNextDocTemplate( pos ); if( pTemplate->GetDocString( strFileTypeId, CDocTemplate::regFileTypeId ) && !strFileTypeId.IsEmpty() ) { // CDocTemplate::windowTitle is present only in the document template // for SDI applications. So, we detected SDI application and should // overregister shell file types : CString strTemp( _T("") ); if ( pTemplate->GetDocString( strTemp, CDocTemplate::windowTitle ) && !strTemp.IsEmpty() ) { // path\shell\open\ddeexec = [open("%1")] strTemp.Format( _T( "%s\\shell\\open\\%s" ), (LPCTSTR)strFileTypeId, _T( "ddeexec" ) ); #if ( _MFC_VER >= 0x0700 ) CRegKey reg( HKEY_CLASSES_ROOT ); #else CRegKey reg; reg.Attach( HKEY_CLASSES_ROOT ); #endif if( bRegister ) { if( reg.SetKeyValue( strTemp, _T( "[open(\"%1\")]" ) ) == ERROR_SUCCESS ) { strTemp += _T( "\\Application" ); OSVERSIONINFO osvi = { 0 }; osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ); ::GetVersionEx( & osvi ); if( !( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion == 5 && osvi.dwMinorVersion >= 1 ) ) { reg.SetKeyValue( strTemp, AfxGetAppName() ); } else reg.DeleteSubKey( strTemp ); } } else // Unregister 'ddeexec' registry entry: reg.RecurseDeleteKey( strTemp ); #if ( _MFC_VER >= 0x0700 ) reg.Flush(); #else ::RegFlushKey( reg ); #endif reg.Close(); } } } // Unregister all application document types: if( bRegister == FALSE ) CWinApp::UnregisterShellFileTypes(); }
static void PASCAL AtlRegisterProgID(LPCTSTR lpszCLSID, LPCTSTR lpszProgID, LPCTSTR lpszUserDesc) { CRegKey keyProgID; keyProgID.Create(HKEY_CLASSES_ROOT, lpszProgID); keyProgID.SetValue(lpszUserDesc); keyProgID.SetKeyValue(szCLSID, lpszCLSID); }