void ProfileDlg::DeleteProfile(CString profileName) { CRegKey regKey; regKey.Open(HKEY_CURRENT_USER,PROFILES_LOC,KEY_READ); regKey.RecurseDeleteKey(profileName); regKey.Close(); }
void fsIECatchMgr::CleanIEPluginKey() { CRegKey key; if (ERROR_SUCCESS != key.Open (HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Internet Explorer\\Plugins\\Extension")) return; int i = 0; char szKey [1000]; fs::list <fsString> vKeys; while (RegEnumKey (key, i++, szKey, sizeof (szKey)) == ERROR_SUCCESS) { CRegKey key2; key2.Open (key, szKey); char szValue [1000]; DWORD dw = sizeof (szValue); key2.QueryValue (szValue, NULL, &dw); key2.Close (); if (strnicmp (szValue, "Free Download Manager", strlen ("Free Download Manager")) == 0) vKeys.add (szKey); } for (i = 0; i < vKeys.size (); i++) key.RecurseDeleteKey (vKeys [i]); }
//删除用户 void CDlgLogon::OnDeleteAccounts() { //获取窗口 UINT uComboBoxID=0; switch (m_LogonMode) { case LogonMode_Accounts: { uComboBoxID=IDC_ACCOUNTS; break; } case LogonMode_UserID: { uComboBoxID=IDC_USER_ID; break; } default: ASSERT(FALSE); } CComboBox * pComboBox=(CComboBox *)GetDlgItem(uComboBoxID); //删除信息 CString strBuffer; pComboBox->GetWindowText(strBuffer); pComboBox->SetWindowText(TEXT("")); if (strBuffer.IsEmpty()) return; int iSelectItem=ComboBoxFindString(pComboBox,strBuffer); if (iSelectItem!=LB_ERR) { CRegKey RegUserID; CString strUserID; DWORD dwUserDBID=(DWORD)pComboBox->GetItemData(iSelectItem); strUserID.Format(TEXT("%ld"),dwUserDBID); RegUserID.Open(HKEY_CURRENT_USER,REG_USER_INFO); if (RegUserID!=NULL) RegUserID.RecurseDeleteKey(strUserID); //删除选择信息 CComboBox * pOtherComboBox=NULL; UINT uComboBoxIDs[]={IDC_ACCOUNTS,IDC_USER_ID}; for (int i=0;i<CountArray(uComboBoxIDs);i++) { pOtherComboBox=(CComboBox *)GetDlgItem(uComboBoxIDs[i]); for (int j=0;j<pOtherComboBox->GetCount();j++) { DWORD dwUserIDRead=(DWORD)pOtherComboBox->GetItemData(j); if (dwUserIDRead==dwUserDBID) { if (pOtherComboBox->GetCurSel()==j) pOtherComboBox->SetWindowText(TEXT("")); pOtherComboBox->DeleteString(j); break; } } } } //更新选择 pComboBox->SetFocus(); if (pComboBox->GetCount()>0) { pComboBox->SetCurSel(0); DWORD dwUserDBID=(DWORD)pComboBox->GetItemData(0); UpdateUserPassWord(dwUserDBID); UpdateUserComboBox(uComboBoxID); } else UpdateUserPassWord(0L); 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; }
void _ATL_OBJMAP_ENTRY::RemoveRegistry() { USES_CONVERSION; CRegKey key; key.Attach(HKEY_CLASSES_ROOT); if (lpszProgID) { key.RecurseDeleteKey(lpszProgID); } if (lpszVerIndProgID) { key.RecurseDeleteKey(lpszVerIndProgID); } LPOLESTR lpOleStr; StringFromCLSID(*pclsid, &lpOleStr); LPTSTR lpsz = OLE2T(lpOleStr); key.Open(key, szCLSID); key.RecurseDeleteKey(lpsz); CoTaskMemFree(lpOleStr); }
void CFcAppSoundsRegistry::_UnregisterApp( void ) { CRegKey Apps; LSTATUS ls = Apps.Open( HKEY_CURRENT_USER, L"AppEvents\\Schemes\\Apps" ); if ( ERROR_SUCCESS != ls ) { debug( L"CFcAppSoundsRegistry::_UnregisterApp: open of HKCU\\AppEvents\\Schemes\\Apps failed: %ld\n", ls ); return; } ls = Apps.RecurseDeleteKey( L"FreeCompose" ); debug( L"CFcAppSoundsRegistry::_UnregisterApp: delete of 'FreeCompose': %ld\n", ls ); ls = Apps.Close( ); }
bool CFileAssoc::RegisterFolderContextMenuEntries(bool bRegister) { CRegKey key; bool success; if (bRegister) { success = false; CString appIcon = "\"" + GetProgramPath(true) + "\",0"; if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".enqueue"))) { key.SetStringValue(nullptr, ResStr(IDS_ADD_TO_PLAYLIST)); key.SetStringValue(_T("Icon"), appIcon); if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".enqueue\\command"))) { key.SetStringValue(nullptr, m_strEnqueueCommand); success = true; } } if (success && ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".play"))) { success = false; key.SetStringValue(nullptr, ResStr(IDS_OPEN_WITH_MPC)); key.SetStringValue(_T("Icon"), appIcon); if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".play\\command"))) { key.SetStringValue(nullptr, m_strOpenCommand); success = true; } } } else { key.Attach(HKEY_CLASSES_ROOT); success = (ERROR_SUCCESS == key.RecurseDeleteKey(_T("Directory\\shell\\") PROGID _T(".enqueue"))); success &= (ERROR_SUCCESS == key.RecurseDeleteKey(_T("Directory\\shell\\") PROGID _T(".play"))); } return success; }
void fsDownloads_GroupsMgr::DeleteGroup(LPCSTR pszGroup) { int grp = FindGroupByName (pszGroup); if (grp == -1) return; m_vGroups.del (grp); CRegKey key; key.Attach (m_hGroups); key.RecurseDeleteKey (pszGroup); key.Detach (); }
void CFcAppSoundsRegistry::_UnregisterEventLabels( void ) { CRegKey EventLabels; LSTATUS ls = EventLabels.Open( HKEY_CURRENT_USER, L"AppEvents\\EventLabels" ); if ( ERROR_SUCCESS != ls ) { debug( L"CFcAppSoundsRegistry::_UnregisterEventLabels: EventLabels.Open failed: %ld\n", ls ); return; } for ( int n = 0; n < NumberOfApplicationSounds; n++ ) { ls = EventLabels.RecurseDeleteKey( ApplicationSoundNames[n] ); debug( L"CFcAppSoundsRegistry::_UnregisterEventLabels: delete of '%s': %ld\n", ApplicationSoundNames[n], ls ); } ls = EventLabels.Close( ); }
void UnInstallRegKey() { {// [-HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags] CRegKey rk; rk.Open(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell")); rk.RecurseDeleteKey(_T("Bags")); } { CRegKey rk; rk.Open(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced")); rk.DeleteValue(_T("FullRowSelect")); } }
void CAddInRegistrar::Unregister(CLSID clsid) { LPOLESTR lpClsidString; StringFromCLSID(clsid, &lpClsidString); CString strKeyCLSID = lpClsidString; CRegKey key; key.Open(HKEY_CLASSES_ROOT, L"CLSID"); key.RecurseDeleteKey(strKeyCLSID); key.Close(); CoTaskMemFree(lpClsidString); }
//RecurseDeleteKey is necessary because on NT RegDeleteKey doesn't work if the //specified key has subkeys void CRegKey::RecurseDeleteKey(LPCTSTR lpszKey) { CRegKey key; if (!key.Open(m_hKey, lpszKey)) return; FILETIME time; TCHAR szBuffer[256]; DWORD dwSize = 256; while (RegEnumKeyEx(key.m_hKey, 0, szBuffer, &dwSize, NULL, NULL, NULL, &time)==ERROR_SUCCESS) { key.RecurseDeleteKey(szBuffer); dwSize = 256; } key.Close(); DeleteSubKey(lpszKey); }
BOOL OnUnregisterUrlProtocol( LPCTSTR lpszModuleName ) { //清注册表 //需要写入注册表的权限 //暂时只写入 HKEY_CLASSES_ROOT,不写HKEY_CURRENT_USER\Software\Classes CString sModuleName = lpszModuleName == NULL ? "" : lpszModuleName; if ( sModuleName.IsEmpty() ) return FALSE; CString sRegPath = sModuleName; CRegKey keyUrlProtocol; if (keyUrlProtocol.Create(HKEY_CLASSES_ROOT, sRegPath) != ERROR_SUCCESS) { return FALSE; } keyUrlProtocol.RecurseDeleteKey(_T("")); keyUrlProtocol.Close(); return TRUE; }
BOOL vmsTorrentExtension::AssociateWith(LPCSTR pszCmdLine) { if (pszCmdLine && *pszCmdLine) { return vmsFileExtensionInOs::SetAssociation ("torrent", "open", pszCmdLine); } else { CRegKey key; LONG lRes; if (ERROR_SUCCESS != (lRes=key.Open (HKEY_CLASSES_ROOT, "", KEY_READ | KEY_WRITE))) { SetLastError (lRes); return FALSE; } lRes = key.RecurseDeleteKey (".torrent"); if (lRes != ERROR_SUCCESS) SetLastError (lRes); return lRes == ERROR_SUCCESS; } }
// This will add the history of data used LRESULT CToolBarCombo::AddtoHistory(const _bstr_t& bstrURL){ CRegKey keyAppID; if(std::basic_string<TCHAR>(bstrURL).find_first_not_of(_T(" "))!=std::string::npos) { int h = GetCount(); int pos = FindStringExact(-1,bstrURL); if(pos == CB_ERR){ if(h<50){ InsertString(0,bstrURL); }else{ DeleteString(h-1); InsertString(0,bstrURL); } }else{ DeleteString(pos); InsertString(0,bstrURL); } { CRegKey keyAppID; keyAppID.Attach(Get6BeeAppRegistryKey()); keyAppID.RecurseDeleteKey(_T("History")); } { CRegKey keyAppID; keyAppID.Create(Get6BeeAppRegistryKey(),_T("History")); for(int i=0;i < GetCount();i++) { TCHAR cValue[1024]={}; GetLBText(i, cValue); keyAppID.SetDWORDValue(cValue,1); } } SetCurSel(0); } return 0; }
BOOL vmsMagnetExtension::AssociateWith(const AssociationParameters& ap) { if (!ap.tstrShellOpenCmdLine.empty ()) { BOOL bOK = vmsFileExtensionInOs::SetAssociation (_T("Magnet"), _T("open"), ap.tstrShellOpenCmdLine.c_str (), FALSE); if (bOK) { CRegKey key; if (ERROR_SUCCESS == vmsFileExtensionInOs::OpenAssociationKey (key, _T ("Magnet"), true, KEY_WRITE)) { if (ap.bUrlProtocolSpecified) key.SetStringValue (_T ("URL Protocol"), ap.tstrUrlProtocol.c_str ()); else key.DeleteValue (_T ("URL Protocol")); } else { bOK = FALSE; } } return bOK; } else { CRegKey key; LONG lRes; if (ERROR_SUCCESS != (lRes=key.Open (HKEY_CLASSES_ROOT, _T(""), KEY_READ | KEY_WRITE))) { SetLastError (lRes); return FALSE; } lRes = key.RecurseDeleteKey (_T("Magnet")); if (lRes != ERROR_SUCCESS) SetLastError (lRes); return lRes == ERROR_SUCCESS; } }
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(); }
bool CPPageFormats::RegisterExt(CString ext, CString strLabel, bool fRegister) { CRegKey key; bool bSetValue; CString strProgID = _T("mplayerc") + ext; if(!fRegister) { if(fRegister != IsRegistered(ext)) SetFileAssociation (ext, strProgID, fRegister); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID); return(true); } bSetValue = fRegister || (ERROR_SUCCESS != key.Open(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"), KEY_READ)); // Create ProgID for this file type if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID)) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, strLabel)) return(false); // Add to playlist option if(f_setContextFiles) { if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetEnqueueCommand()))) return(false); } else { key.Close(); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\shell\\enqueue")); } // Play option if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open"))) return(false); if(f_setContextFiles) { if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC))) return(false); } else { if(ERROR_SUCCESS != key.SetStringValue(NULL, _T(""))) return(false); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetOpenCommand()))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, g_strRegisteredKey + _T("\\FileAssociations"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(ext, strProgID)) return(false); if(f_setAssociatedWithIcon) { CString AppIcon = _T(""); TCHAR buff[_MAX_PATH]; CString mpciconlib = GetProgramDir() + _T("\\mpciconlib.dll"); if(FileExists(mpciconlib)) { int icon_index = GetIconIndex(ext); CString m_typeicon = mpciconlib; /* icon_index value -1 means no icon was found in the iconlib for the file extension */ if((icon_index >= 0) && ExtractIcon(AfxGetApp()->m_hInstance,(LPCWSTR)m_typeicon, icon_index)) { m_typeicon = "\""+mpciconlib+"\""; AppIcon.Format(_T("%s,%d"), m_typeicon, icon_index); } } /* no icon was found for the file extension, so use MPC's icon */ if((AppIcon.IsEmpty()) && (::GetModuleFileName(AfxGetInstanceHandle(), buff, MAX_PATH))) { AppIcon = buff; AppIcon = "\""+AppIcon+"\""; AppIcon += _T(",0"); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\DefaultIcon"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, AppIcon))) return(false); } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\DefaultIcon")); } if(fRegister != IsRegistered(ext)) SetFileAssociation (ext, strProgID, fRegister); return(true); }
bool CPPageFormats::RegisterExt(CString ext, bool fRegister, CString PerceivedType) { CRegKey key; bool bSetValue; CString strProgID = _T("SPlayer") + ext; CString strLabel = _T(""); if(ext == _T(".rar")){ return true; } if(fRegister){ //为保证成功注册清理垃圾 //AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("KMPlayer") + ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("QQPlayer") + ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("stormplayer") + ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("RealPlayer") + ext+L".6"); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("RealPlayer") + ext+L".10"); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("Xmp") + ext); } CString path, fn, cmd; if(!MakeRegParams(ext, path, fn, strLabel, cmd)) return(false); strLabel = GetFileTypeName(ext); if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, ext)) return(false); if (!PerceivedType.IsEmpty()) { key.SetStringValue (L"PerceivedType", PerceivedType); } BOOL bIsRAR = (ext.Right(3).MakeLower() == _T("rar")); if (bIsRAR) return true; if(!fRegister && !bIsRAR) { if(fRegister != IsRegistered(ext)) SetFileAssociation (ext, strProgID, fRegister); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID); return(true); } bSetValue = fRegister || (ERROR_SUCCESS != key.Open(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"), KEY_READ)); // Create ProgID for this file type if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID)) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, strLabel)) return(false); // Add to playlist option if(f_setContextFiles || bIsRAR) { if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetEnqueueCommand()))) return(false); } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\shell\\enqueue")); } // Play option if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open"))) return(false); if(f_setContextFiles || bIsRAR) { if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC))) return(false); } else { if(ERROR_SUCCESS != key.SetStringValue(NULL, _T(""))) return(false); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetOpenCommand()))) return(false); // Play option if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\openewnd"))) return(false); if(f_setContextFiles || bIsRAR) { if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC_IN_NEW_WND))) return(false); } else { if(ERROR_SUCCESS != key.SetStringValue(NULL, _T(""))) return(false); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\openewnd\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetOpenCommand(true)))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, g_strRegisteredKey + _T("\\FileAssociations"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(ext, strProgID)) return(false); if(f_setAssociatedWithIcon && !bIsRAR) { CString AppIcon = GetFileIcon(ext); TCHAR buff[MAX_PATH]; if((AppIcon.IsEmpty()) && (::GetModuleFileName(AfxGetInstanceHandle(), buff, MAX_PATH))) { AppIcon = buff; AppIcon = "\""+AppIcon+"\""; AppIcon += _T(",0"); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\DefaultIcon"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, AppIcon))) return(false); } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\DefaultIcon")); } if (fRegister && !bIsRAR) SetFileAssociation(ext, strProgID, fRegister); return(true); }
HRESULT CTCPropBagOnRegKey::_WriteVariant(CRegKey& key, const _bstr_t& strValueName, VARIANT* pVar) { // Check for an array if (V_ISARRAY(pVar)) return WriteSafeArray(key, strValueName, pVar); // Write the value to the registry based on the VARIANT type switch (V_VT(pVar)) { // Empty variant is written as nothing case VT_EMPTY: key.DeleteValue(strValueName); key.RecurseDeleteKey(strValueName); break; // Integer types are written as a REG_DWORD value case VT_I1: case VT_I2: case VT_I4: case VT_UI1: case VT_UI2: case VT_ERROR: { // Coerce the value to a VT_UI4 VariantChangeTypeEx(pVar, pVar, GetThreadLocale(), m_wChangeTypeFlags, VT_UI4); // Fall thru to next case } case VT_UI4: { // Write the REG_DWORD value to the registry key.RecurseDeleteKey(strValueName); key.WriteDWord(strValueName, V_UI4(pVar)); break; } // BOOL's, float types and strings are written as a REG_SZ value case VT_R4: case VT_R8: case VT_CY: case VT_DATE: case VT_DECIMAL: case VT_BOOL: { // Coerce the value to a VT_BSTR VariantChangeTypeEx(pVar, pVar, GetThreadLocale(), m_wChangeTypeFlags, VT_BSTR); // Fall thru to next case } case VT_BSTR: { // Write the REG_SZ value to the registry key.RecurseDeleteKey(strValueName); key.WriteString(strValueName, V_BSTR(pVar)); break; } // Objects written as REG_BINARY, if they don't support IPersistPropertyBag case VT_UNKNOWN: case VT_DISPATCH: { // Attempt first to save the object property using IPersistPropertyBag key.DeleteValue(strValueName); key.RecurseDeleteKey(strValueName); CComObjectStack<CTCPropBagOnRegKey> bag; bag.Init(key, _bstr_t(), this); HRESULT hr = bag.SaveObject(strValueName, V_UNKNOWN(pVar), FALSE, TRUE); if (FAILED(hr)) { TRACE1("CTCPropBagOnRegKey::_WriteVariant: Saving object property \"%s\" as a binary value\n", strValueName); // Create a CArchive on a CMemFile CMemFile file; CArchive ar(&file, CArchive::store, 0); // Archive the variant to the CArchive and close it CComVariant v(pVar); ar << v; ar.Close(); // Write the REG_BINARY value to the registry int cbData = file.GetLength(); BYTE* pData = file.Detach(); key.RecurseDeleteKey(strValueName); key.WriteBinary(strValueName, pData, cbData); file.Attach(pData, cbData); } break; } default: TRACE1("CTCPropBagOnRegKey::_WriteVariant(\"%ls\"): ", strValueName); TRACE2("Unsupported variant type 0x%02X (%d)\n", UINT(V_VT(pVar)), UINT(V_VT(pVar))); return E_FAIL; } // Indicate success return S_OK; }
void InstallRegKey() { if (::GetAsyncKeyState(VK_CONTROL) < 0) return; {// [-HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags] CRegKey rk; rk.Open(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell")); rk.RecurseDeleteKey(_T("Bags")); } { CRegKey rk; rk.Open(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced")); rk.SetDWORDValue(_T("FullRowSelect"), 0); } { CRegKey rk; rk.Create(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\Bags\\AllFolders\\Shell"), REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE); rk.SetStringValue(_T("KnownFolderDerivedFolderType"), _T("{57807898-8C4F-4462-BB63-71042380B109}")); rk.SetStringValue(_T("SniffedFolderType"), _T("Generic")); } {// ;Generic - Folder Template CRegKey rk; rk.Create(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\Bags\\AllFolders\\Shell\\{5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}"), REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE); rk.SetDWORDValue(_T("Rev") , 0); rk.SetDWORDValue(_T("FFlags") , 0x43000001); rk.SetStringValue(_T("Vid"), _T("{137E7700-3573-11CF-AE69-08002B2E1262}")); rk.SetDWORDValue(_T("Mode") , 4); rk.SetDWORDValue(_T("LogicalViewMode") , 1); rk.SetDWORDValue(_T("IconSize") , 0x10); BYTE ColInfo[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfd,0xdf,0xdf,0xfd,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47, 0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a, 0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0e,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10, 0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x04,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5, 0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0c,0x00,0x00,0x00,0x50,0x00,0x00,0x00 }; //rk.SetBinaryValue(_T("ColInfo"), ColInfo, sizeof(ColInfo)); BYTE Sort[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0xf1, 0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("Sort"), Sort, sizeof(Sort)); rk.SetDWORDValue(_T("GroupView") , 0); rk.SetStringValue(_T("GroupByKey:FMTID"), _T("{00000000-0000-0000-0000-000000000000}")); rk.SetDWORDValue(_T("GroupByKey:PID") , 0); rk.SetDWORDValue(_T("GroupByDirection") , 1); } {// ;Documents - Folder Template CRegKey rk; rk.Create(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\Bags\\AllFolders\\Shell\\{7d49d726-3c21-4f05-99aa-fdc2c9474656}"), REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE); rk.SetDWORDValue(_T("Rev") , 0); rk.SetDWORDValue(_T("FFlags") , 0x43000001); rk.SetStringValue(_T("Vid"), _T("{137E7700-3573-11CF-AE69-08002B2E1262}")); rk.SetDWORDValue(_T("Mode") , 4); rk.SetDWORDValue(_T("LogicalViewMode") , 1); rk.SetDWORDValue(_T("IconSize") , 0x10); BYTE ColInfo[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfd,0xdf,0xdf,0xfd,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47, 0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a, 0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0e,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10, 0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x04,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5, 0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0c,0x00,0x00,0x00,0x50,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("ColInfo"), ColInfo, sizeof(ColInfo)); BYTE Sort[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0xf1, 0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("Sort"), Sort, sizeof(Sort)); rk.SetDWORDValue(_T("GroupView") , 0); rk.SetStringValue(_T("GroupByKey:FMTID"), _T("{00000000-0000-0000-0000-000000000000}")); rk.SetDWORDValue(_T("GroupByKey:PID") , 0); rk.SetDWORDValue(_T("GroupByDirection") , 1); } {// ;Music - Folder Template CRegKey rk; rk.Create(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\Bags\\AllFolders\\Shell\\{94d6ddcc-4a68-4175-a374-bd584a510b78}"), REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE); rk.SetDWORDValue(_T("Rev") , 0); rk.SetDWORDValue(_T("FFlags") , 0x43000001); rk.SetStringValue(_T("Vid"), _T("{137E7700-3573-11CF-AE69-08002B2E1262}")); rk.SetDWORDValue(_T("Mode") , 4); rk.SetDWORDValue(_T("LogicalViewMode") , 1); rk.SetDWORDValue(_T("IconSize") , 0x10); BYTE ColInfo[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfd,0xdf,0xdf,0xfd,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47, 0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a, 0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0e,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10, 0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x04,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5, 0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0c,0x00,0x00,0x00,0x50,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("ColInfo"), ColInfo, sizeof(ColInfo)); BYTE Sort[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0xf1, 0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("Sort"), Sort, sizeof(Sort)); rk.SetDWORDValue(_T("GroupView") , 0); rk.SetStringValue(_T("GroupByKey:FMTID"), _T("{00000000-0000-0000-0000-000000000000}")); rk.SetDWORDValue(_T("GroupByKey:PID") , 0); rk.SetDWORDValue(_T("GroupByDirection") , 1); } {// ;Pictures - Folder Template CRegKey rk; rk.Create(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\Bags\\AllFolders\\Shell\\{b3690e58-e961-423b-b687-386ebfd83239}"), REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE); rk.SetDWORDValue(_T("Rev") , 0); rk.SetDWORDValue(_T("FFlags") , 0x43000001); rk.SetStringValue(_T("Vid"), _T("{137E7700-3573-11CF-AE69-08002B2E1262}")); rk.SetDWORDValue(_T("Mode") , 4); rk.SetDWORDValue(_T("LogicalViewMode") , 1); rk.SetDWORDValue(_T("IconSize") , 0x10); BYTE ColInfo[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfd,0xdf,0xdf,0xfd,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47, 0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a, 0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0e,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10, 0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x04,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5, 0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0c,0x00,0x00,0x00,0x50,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("ColInfo"), ColInfo, sizeof(ColInfo)); BYTE Sort[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0xf1, 0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("Sort"), Sort, sizeof(Sort)); rk.SetDWORDValue(_T("GroupView") , 0); rk.SetStringValue(_T("GroupByKey:FMTID"), _T("{00000000-0000-0000-0000-000000000000}")); rk.SetDWORDValue(_T("GroupByKey:PID") , 0); rk.SetDWORDValue(_T("GroupByDirection") , 1); } {// ;Videos - Folder Template CRegKey rk; rk.Create(HKEY_CURRENT_USER, _T("Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\Bags\\AllFolders\\Shell\\{5fa96407-7e77-483c-ac93-691d05850de8}"), REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE); rk.SetDWORDValue(_T("Rev") , 0); rk.SetDWORDValue(_T("FFlags") , 0x43000001); rk.SetStringValue(_T("Vid"), _T("{137E7700-3573-11CF-AE69-08002B2E1262}")); rk.SetDWORDValue(_T("Mode") , 4); rk.SetDWORDValue(_T("LogicalViewMode") , 1); rk.SetDWORDValue(_T("IconSize") , 0x10); BYTE ColInfo[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfd,0xdf,0xdf,0xfd,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47, 0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a, 0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0e,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10, 0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x04,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0xf1,0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5, 0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0c,0x00,0x00,0x00,0x50,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("ColInfo"), ColInfo, sizeof(ColInfo)); BYTE Sort[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0xf1, 0x25,0xb7,0xef,0x47,0x1a,0x10,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00 }; rk.SetBinaryValue(_T("Sort"), Sort, sizeof(Sort)); rk.SetDWORDValue(_T("GroupView") , 0); rk.SetStringValue(_T("GroupByKey:FMTID"), _T("{00000000-0000-0000-0000-000000000000}")); rk.SetDWORDValue(_T("GroupByKey:PID") , 0); rk.SetDWORDValue(_T("GroupByDirection") , 1); } }
void fsUrlsToDownloadRegKeyMgr::CheckKey() { CRegKey key; if (ERROR_SUCCESS != key.Open (HKEY_CURRENT_USER, "Software\\FreeDownloadManager.ORG\\Free Download Manager\\URLsToDownload")) return; fs::list <fsString> vKeys; BOOL bZL = _DldsMgr.GetCount () == 0; int i = 0; for (i = 0; TRUE; i++) { char szKeyName [10000]; DWORD dwLen = sizeof (szKeyName); if (ERROR_SUCCESS != RegEnumKey (key, i, szKeyName, dwLen)) break; CRegKey key2; if (ERROR_SUCCESS == key2.Open (key, szKeyName)) { char szUrl [10000]; DWORD dw = sizeof (szUrl); DWORD bSilent = FALSE; char szComment [10000] = ""; DWORD dwCS = sizeof (szComment); DWORD bAutoStart = TRUE; DWORD bZLR = FALSE; DWORD dwForceAutoLaunch = DWCD_NOFORCEAUTOLAUNCH; DWORD bSaveToDesktop = FALSE; key2.QueryValue (bSilent, "Silent"); key2.QueryValue (szComment, "Comment", &dwCS); key2.QueryValue (bAutoStart, "AutoStart"); key2.QueryValue (bZLR, "zlr"); key2.QueryValue (dwForceAutoLaunch, "ForceAutoLaunch"); key2.QueryValue (bSaveToDesktop, "SaveToDesktop"); if (bZLR == FALSE || bZL) if (ERROR_SUCCESS == key2.QueryValue (szUrl, "URL", &dw)) { char szReferer [10000]; dw = sizeof (szReferer); *szReferer = 0; key2.QueryValue (szReferer, "Referer", &dw); fsURL url; if (url.Crack (szUrl) == IR_SUCCESS) { vmsDWCD_AdditionalParameters params; params.dwMask = DWCDAP_FLAGS; params.dwFlags = bSaveToDesktop ? DWDCDAP_F_SAVETODESKTOP : 0; _pwndDownloads->CreateDownload (szUrl, FALSE, szComment, *szReferer ? szReferer : NULL, bSilent, dwForceAutoLaunch, (LPBOOL)&bAutoStart, ¶ms); } } } vKeys.add (szKeyName); } for (i = 0; i < vKeys.size (); i++) key.RecurseDeleteKey (vKeys [i]); }
void CIEMonitor::ApplyChanges( void ) { BOOL bNeedReg = FALSE; if(m_bFirstRun) { bNeedReg = CheckForUpdate(thePrefs.GetMuleDirectory(EMULE_MODULEDIR) + _T("IE2EM.dll")); } if(bNeedReg || !IsRegistered()) RegisterAll(); if(m_bFirstRun || m_bIEMenu != thePrefs.GetAddToIEMenu() || m_bMonitor != thePrefs.GetMonitorLinks() || m_bEd2k != thePrefs.GetMonitorEd2k() || m_wLangID != thePrefs.GetLanguageID()) { m_bIEMenu = thePrefs.GetAddToIEMenu(); m_bMonitor = thePrefs.GetMonitorLinks(); m_bEd2k = thePrefs.GetMonitorEd2k(); m_wLangID = thePrefs.GetLanguageID(); CRegKey regkey; CRegKey subkey; if( regkey.Create(HKEY_CURRENT_USER, _T("Software\\easyMule")) == ERROR_SUCCESS) { TCHAR szPath[512]; DWORD count = 512; if(regkey.QueryStringValue(_T("InstallPath"), szPath, &count) != ERROR_SUCCESS) { _tcscpy(szPath, thePrefs.GetMuleDirectory(EMULE_EXECUTEABLEDIR)); INT len = _tcslen(szPath); if(len > 3 && szPath[len - 1] == '\\') szPath[len - 1] = 0; regkey.SetStringValue(_T("InstallPath"), szPath); } regkey.Close(); } CString strPath = thePrefs.GetMuleDirectory(EMULE_EXECUTEABLEDIR) + _T("IE2EM.htm"); if( regkey.Create(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\MenuExt")) == ERROR_SUCCESS) { TCHAR szName[1024]; DWORD dwLen = 1024; BOOL bFound = FALSE; for(INT i = 0; regkey.EnumKey(i, szName, &dwLen) != ERROR_NO_MORE_ITEMS; i ++) { subkey.Open(regkey, szName); TCHAR szValue[1024]; ULONG uLen = 1024; subkey.QueryStringValue(NULL, szValue, &uLen); if(strPath == szValue) { bFound = TRUE; break; } subkey.Close(); dwLen = 1024; } if(bFound) { subkey.Close(); regkey.RecurseDeleteKey(szName); } if(m_bIEMenu) { subkey.Create(regkey, GetResString(IDS_IEMENUEXT)); subkey.SetStringValue(NULL, strPath); subkey.SetDWORDValue(_T("Contexts"), 0x22); subkey.Close(); } regkey.Close(); } if( regkey.Create(HKEY_CURRENT_USER, _T("Software\\easyMule")) == ERROR_SUCCESS) { if(m_bMonitor) regkey.SetDWORDValue(_T("Monitor"), 1); else regkey.SetDWORDValue(_T("Monitor"), 0); regkey.Close(); } } m_bFirstRun = false; }
bool CFileAssoc::Register(CString ext, CString strLabel, bool bRegister, bool bRegisterContextMenuEntries, bool bAssociatedWithIcon) { CRegKey key; CString strProgID = PROGID + ext; if (!bRegister) { if (bRegister != IsRegistered(ext)) { SetFileAssociation(ext, strProgID, bRegister); } key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID); return true; } else { // Create ProgID for this file type if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID) || ERROR_SUCCESS != key.SetStringValue(NULL, strLabel)) { return false; } // Add to playlist option if (bRegisterContextMenuEntries) { if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue")) || ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST)) || ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue\\command")) || ERROR_SUCCESS != key.SetStringValue(NULL, strEnqueueCommand)) { return false; } } else { key.Close(); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\shell\\enqueue")); } // Play option if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open"))) { return false; } if (bRegisterContextMenuEntries) { if (ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC))) { return false; } } else { if (ERROR_SUCCESS != key.SetStringValue(NULL, _T(""))) { return false; } } if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command")) || ERROR_SUCCESS != key.SetStringValue(NULL, strOpenCommand)) { return false; } if (ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, strRegAppFileAssocKey) || key.SetStringValue(ext, strProgID)) { return false; } if (bAssociatedWithIcon) { CString appIcon; if (m_hIconLib) { int iconIndex = GetIconIndex(ext); /* icon_index value -1 means no icon was found in the iconlib for the file extension */ if (iconIndex >= 0 && ExtractIcon(AfxGetApp()->m_hInstance, m_iconLibPath, iconIndex)) { appIcon.Format(_T("\"%s\",%d"), m_iconLibPath, iconIndex); } } /* no icon was found for the file extension, so use MPC's icon */ if (appIcon.IsEmpty()) { appIcon = "\"" + GetProgramPath(true) + "\",0"; } if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\DefaultIcon")) || ERROR_SUCCESS != key.SetStringValue(NULL, appIcon)) { return false; } } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\DefaultIcon")); } if (bRegister != IsRegistered(ext)) { SetFileAssociation(ext, strProgID, bRegister); } return true; } }
bool CFileAssoc::Register(CString ext, CString strLabel, bool bRegister, bool bRegisterContextMenuEntries, bool bAssociatedWithIcon) { CRegKey key; CString strProgID = PROGID + ext; if (!bRegister) { // On Windows 8, an app can't set itself as the default handler for a format if (!SysVersion::Is8OrLater() && bRegister != IsRegistered(ext)) { SetFileAssociation(ext, strProgID, bRegister); } key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID); if (ERROR_SUCCESS == key.Open(HKEY_LOCAL_MACHINE, m_strRegAppFileAssocKey)) { key.DeleteValue(ext); } return true; } else { // Create ProgID for this file type if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID) || ERROR_SUCCESS != key.SetStringValue(nullptr, strLabel)) { return false; } if (m_bNoRecentDocs) { key.SetStringValue(_T("NoRecentDocs"), _T("")); } else { key.DeleteValue(_T("NoRecentDocs")); } CString appIcon = "\"" + GetProgramPath(true) + "\",0"; // Add to playlist option if (bRegisterContextMenuEntries) { if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue")) || ERROR_SUCCESS != key.SetStringValue(nullptr, ResStr(IDS_ADD_TO_PLAYLIST)) || ERROR_SUCCESS != key.SetStringValue(_T("Icon"), appIcon) || ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue\\command")) || ERROR_SUCCESS != key.SetStringValue(nullptr, m_strEnqueueCommand)) { return false; } } else { key.Close(); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\shell\\enqueue")); } // Play option if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open"))) { return false; } if (bRegisterContextMenuEntries) { if (ERROR_SUCCESS != key.SetStringValue(nullptr, ResStr(IDS_OPEN_WITH_MPC)) || ERROR_SUCCESS != key.SetStringValue(_T("Icon"), appIcon)) { return false; } } else { if (ERROR_SUCCESS != key.SetStringValue(nullptr, _T("")) || ERROR_SUCCESS != key.SetStringValue(_T("Icon"), _T(""))) { return false; } } if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command")) || ERROR_SUCCESS != key.SetStringValue(nullptr, m_strOpenCommand)) { return false; } if (ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, m_strRegAppFileAssocKey) || key.SetStringValue(ext, strProgID)) { return false; } if (bAssociatedWithIcon) { if (auto iconLib = GetIconLib()) { int iconIndex = iconLib->GetIconIndex(ext); /* icon_index value -1 means no icon was found in the iconlib for the file extension */ if (iconIndex >= 0 && ExtractIcon(AfxGetApp()->m_hInstance, m_iconLibPath, iconIndex)) { appIcon.Format(_T("\"%s\",%d"), m_iconLibPath, iconIndex); } } if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\DefaultIcon")) || ERROR_SUCCESS != key.SetStringValue(nullptr, appIcon)) { return false; } } else { key.Close(); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\DefaultIcon")); } // On Windows 8, an app can't set itself as the default handler for a format if (!SysVersion::Is8OrLater() && bRegister != IsRegistered(ext)) { SetFileAssociation(ext, strProgID, bRegister); } return true; } }
BOOL CPPageFormats::OnApply() { UpdateData(); { int i = m_list.GetSelectionMark(); if (i >= 0) { i = (int)m_list.GetItemData(i); } if (i >= 0) { CMediaFormats& mf = AfxGetAppSettings().m_Formats; mf[i].SetExts(m_exts); m_exts = mf[i].GetExtsWithPeriod(); UpdateData(FALSE); } } CMediaFormats& mf = AfxGetAppSettings().m_Formats; RegisterApp(); f_setContextFiles = m_fContextFiles.GetCheck(); f_setAssociatedWithIcon = m_fAssociatedWithIcons.GetCheck(); if (m_bFileExtChanged) { for (int i = 0; i < m_list.GetItemCount(); i++) { int iChecked = GetChecked(i); if (iChecked == 2) { continue; } CAtlList<CString> exts; Explode(mf[(int)m_list.GetItemData(i)].GetExtsWithPeriod(), exts, ' '); POSITION pos = exts.GetHeadPosition(); while (pos) { RegisterExt(exts.GetNext(pos), mf[(int)m_list.GetItemData(i)].GetDescription(), !!iChecked); } } } CRegKey key; if (m_fContextDir.GetCheck()) { if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".enqueue"))) { key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST)); } if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".enqueue\\command"))) { key.SetStringValue(NULL, GetEnqueueCommand()); } if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".play"))) { key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC)); } if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".play\\command"))) { key.SetStringValue(NULL, GetOpenCommand()); } } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(_T("Directory\\shell\\") PROGID _T(".enqueue")); key.RecurseDeleteKey(_T("Directory\\shell\\") PROGID _T(".play")); } { SetListItemState(m_list.GetSelectionMark()); } AddAutoPlayToRegistry(AP_VIDEO, !!m_apvideo.GetCheck()); AddAutoPlayToRegistry(AP_MUSIC, !!m_apmusic.GetCheck()); AddAutoPlayToRegistry(AP_AUDIOCD, !!m_apaudiocd.GetCheck()); AddAutoPlayToRegistry(AP_DVDMOVIE, !!m_apdvd.GetCheck()); AppSettings& s = AfxGetAppSettings(); s.m_Formats.SetRtspHandler(m_iRtspHandler==0?RealMedia:m_iRtspHandler==1?QuickTime:DirectShow, !!m_fRtspFileExtFirst); s.fAssociatedWithIcons = !!m_fAssociatedWithIcons.GetCheck(); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); return __super::OnApply(); }
BOOL CPPageFormats::OnApply() { UpdateData(); { int i = m_list.GetSelectionMark(); if(i >= 0) i = (int)m_list.GetItemData(i); if(i >= 0) { CMediaFormats& mf = AfxGetAppSettings().Formats; mf[i].SetExts(m_exts); m_exts = mf[i].GetExtsWithPeriod(); UpdateData(FALSE); } } CMediaFormats& mf = AfxGetAppSettings().Formats; CString AppIcon = _T(""); TCHAR buff[_MAX_PATH]; if(::GetModuleFileName(AfxGetInstanceHandle(), buff, MAX_PATH)) { AppIcon = buff; AppIcon = "\""+AppIcon+"\""; AppIcon += _T(",0"); } if (m_pAAR) { // Register MPC for the windows "Default application" manager CRegKey key; if(ERROR_SUCCESS == key.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\RegisteredApplications"))) { key.SetStringValue(_T("Media Player Classic"), g_strRegisteredKey); if(ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, g_strRegisteredKey)) return(false); // ==>> TODO icon !!! key.SetStringValue(_T("ApplicationDescription"), ResStr(IDS_APP_DESCRIPTION), REG_EXPAND_SZ); key.SetStringValue(_T("ApplicationIcon"), AppIcon, REG_EXPAND_SZ); key.SetStringValue(_T("ApplicationName"), ResStr(IDR_MAINFRAME), REG_EXPAND_SZ); } } f_setContextFiles = m_fContextFiles.GetCheck(); f_setAssociatedWithIcon = m_fAssociatedWithIcons.GetCheck(); for(int i = 0; i < m_list.GetItemCount(); i++) { int iChecked = GetChecked(i); if(iChecked == 2) continue; CAtlList<CString> exts; Explode(mf[(int)m_list.GetItemData(i)].GetExtsWithPeriod(), exts, ' '); POSITION pos = exts.GetHeadPosition(); while(pos) RegisterExt(exts.GetNext(pos), mf[(int)m_list.GetItemData(i)].GetLabel(), !!iChecked); } CRegKey key; if(m_fContextDir.GetCheck()) { if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.enqueue"))) { key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST)); } if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.enqueue\\command"))) { key.SetStringValue(NULL, GetEnqueueCommand()); } if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.play"))) { key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC)); } if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.play\\command"))) { key.SetStringValue(NULL, GetOpenCommand()); } } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(_T("Directory\\shell\\mplayerc.enqueue")); key.RecurseDeleteKey(_T("Directory\\shell\\mplayerc.play")); } { SetListItemState(m_list.GetSelectionMark()); } AddAutoPlayToRegistry(AP_VIDEO, !!m_apvideo.GetCheck()); AddAutoPlayToRegistry(AP_MUSIC, !!m_apmusic.GetCheck()); AddAutoPlayToRegistry(AP_AUDIOCD, !!m_apaudiocd.GetCheck()); AddAutoPlayToRegistry(AP_DVDMOVIE, !!m_apdvd.GetCheck()); AppSettings& s = AfxGetAppSettings(); s.Formats.SetRtspHandler(m_iRtspHandler==0?RealMedia:m_iRtspHandler==1?QuickTime:DirectShow, !!m_fRtspFileExtFirst); s.fAssociatedWithIcons = !!m_fAssociatedWithIcons.GetCheck(); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); return __super::OnApply(); }
HRESULT CTCPropBagOnRegKey::_WriteSafeArray(CRegKey& key, const _bstr_t& strPropName, VARIANT* pVar) { ASSERT(V_ISARRAY(pVar)); ASSERT(lstrlen(strPropName)); // Get the SAFEARRAY pointer from the variant SAFEARRAY* psa = V_ARRAY(pVar); if (IsBadReadPtr(psa)) return E_POINTER; // Only support 1-dimensional arrays (currently) if (1 != SafeArrayGetDim(psa)) return E_INVALIDARG; // Get the element size of the safe array UINT cbElement = SafeArrayGetElemsize(psa); // Get the safe array type from the variant VARTYPE vt = V_VT(pVar) & ~VT_ARRAY; // Check for supported types and validate the element size switch (vt) { case VT_BOOL: if (sizeof(V_BOOL(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_I1: if (sizeof(V_I1(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_I2: if (sizeof(V_I2(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_I4: if (sizeof(V_I4(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_UI1: if (sizeof(V_UI1(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_UI2: if (sizeof(V_UI2(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_UI4: if (sizeof(V_UI4(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_ERROR: if (sizeof(V_ERROR(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_R4: if (sizeof(V_R4(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_R8: if (sizeof(V_R8(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_DECIMAL: if (sizeof(V_DECIMAL(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_CY: if (sizeof(V_CY(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_DATE: if (sizeof(V_DATE(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_BSTR: if (sizeof(V_BSTR(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_UNKNOWN: if (sizeof(V_UNKNOWN(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_DISPATCH: if (sizeof(V_DISPATCH(pVar)) != cbElement) return E_UNEXPECTED; break; case VT_VARIANT: if (sizeof(V_VARIANTREF(pVar)) != cbElement) return E_UNEXPECTED; break; default: return E_UNEXPECTED; } // Get the upper and lower bounds of the safe array HRESULT hr; LONG lUBound = 0, lLBound = 0; if (FAILED(hr = SafeArrayGetUBound(psa, 1, &lUBound))) return hr; if (FAILED(hr = SafeArrayGetLBound(psa, 1, &lLBound))) return hr; UINT nElements = lUBound - lLBound + 1; // Create a subkey with the specified name key.DeleteValue(strPropName); key.RecurseDeleteKey(strPropName); CRegKey subkey; if (!subkey.Open(key, strPropName)) return HRESULT_FROM_WIN32(GetLastError()); // Get access to the safe array data BYTE* pElement = NULL; if (FAILED(hr = SafeArrayAccessData(psa, (void**)&pElement))) return hr; // Write the variant type value subkey.WriteDWord(m_szVariantType, DWORD(V_VT(pVar))); // Write the element count value subkey.WriteDWord(m_szElementCount, DWORD(nElements)); // Write the lower bound value, if not 0 if (lLBound) subkey.WriteDWord(m_szLowerBound, DWORD(lLBound)); // Special handling for arrays of variants _bstr_t strText; if (VT_VARIANT == vt) { // Write each variant array element to the registry for (UINT i = 0; i < nElements; i++, pElement += cbElement) { // Format the value name strText.Format(m_szElementFmt, i); // Write the variant array element to the registry subkey if (FAILED(hr = WriteVariant(subkey, strText, (VARIANT*)pElement))) { TRACE1("CTCPropBagOnRegKey::_WriteSafeArray(\"%s\", pVar): ", strPropName); TRACE2("WriteVariant(subkey, \"%s\", &var) returned 0x%08X\n", strText, hr); } } } else { // Write each array element to the registry VARIANT var; V_VT(&var) = vt; for (UINT i = 0; i < nElements; i++, pElement += cbElement) { // Copy the array element to the data portion of the VARIANT memcpy(&V_NONE(&var), pElement, cbElement); // Format the value name strText.Format(m_szElementFmt, i); // Write the variant to the registry subkey if (FAILED(hr = WriteVariant(subkey, strText, &var))) { TRACE1("CTCPropBagOnRegKey::_WriteSafeArray(\"%s\", pVar): ", strPropName); TRACE2("WriteVariant(subkey, \"%s\", &var) returned 0x%08X\n", strText, hr); } } } // Release access to the safe array data VERIFY(SUCCEEDED(SafeArrayUnaccessData(psa))); // Indicate success return S_OK; }