1. 程式人生 > >設定指定型別檔案關聯圖示 登錄檔檔案關聯,圖示關聯

設定指定型別檔案關聯圖示 登錄檔檔案關聯,圖示關聯

void RegeditFileToSystem(CString strApplication, CString sFileType,CString sIconFile, CString strDescription /*= _T("")*/) //sFileType關聯的.file檔案 {     CString strRunKey;     strRunKey.Format("%s_auto_open",sFileType.Right(sFileType.GetLength()-1));     HKEY hKey;     if (ERROR_SUCCESS == ::RegOpenKey(HKEY_CLASSES_ROOT,_T(""), &hKey))     {         HKEY hTempKey;         if (ERROR_SUCCESS == ::RegCreateKey(hKey,sFileType,&hTempKey))         {                         if (ERROR_SUCCESS != ::RegSetValue(hTempKey,_T(""),REG_SZ,strRunKey,sizeof(DWORD)))             {                AfxMessageBox(_T("操作登錄檔錯誤"));                 ::RegCloseKey(hKey);                 return;             }         }     }     ::RegCloseKey(hKey);

    HKEY hRunKey;     if (RegOpenKey( HKEY_CLASSES_ROOT, strRunKey, &hRunKey ) != ERROR_SUCCESS )     {         if (RegCreateKey( HKEY_CLASSES_ROOT, strRunKey, &hRunKey ) != ERROR_SUCCESS )         {             ASSERT(FALSE);             RegCloseKey( hRunKey );             return;         }     }     if (strDescription.IsEmpty() == false)         RegSetValue( hRunKey, _T(""), REG_SZ, strDescription, strDescription.GetLength()+1 ) ;

    if (sIconFile.IsEmpty())     {         ::RegDeleteKey(hRunKey,_T("DefaultIcon"));     }     else     {         HKEY hIconKey;         if (ERROR_SUCCESS == ::RegCreateKey(hRunKey,_T("DefaultIcon"),&hIconKey))         {             CString sIconValue;             if (sIconFile.IsEmpty())                 sIconValue.Format( _T("\"%s\",3"), strApplication );             else                 sIconValue = sIconFile;             RegSetValue( hIconKey, _T(""), REG_SZ, sIconValue, sIconValue.GetLength()+1 ) ;         }     }    

    HKEY hShellKey;     if (ERROR_SUCCESS == ::RegCreateKey(hRunKey,_T("shell"),&hShellKey))     {         HKEY hOpenKey;         if (ERROR_SUCCESS == ::RegCreateKey(hShellKey,_T("open"),&hOpenKey))         {             HKEY hCommandKey;             if (ERROR_SUCCESS == ::RegCreateKey(hOpenKey,_T("command"),&hCommandKey))             {                 CString strExePath;                 strExePath.Format( _T("\"%s\" \"%%1\""), strApplication ) ;                 if (ERROR_SUCCESS != ::RegSetValue(hCommandKey,_T(""),REG_SZ,strExePath,sizeof(DWORD)))                 {                     AfxMessageBox(_T("操作登錄檔錯誤"));                     ASSERT(FALSE);                 }             }         }     }

    RegCloseKey( hRunKey ); }

軟體關聯2種格式檔案 *.cusa *.cusb, 2種格式檔案都用exe開啟,2種檔案關聯圖示顯示分別設定2個檔案圖示

請在資源下載測試樣例