M_RESULT SnarlInterface::RegisterApp(LPCWSTR Application, LPCWSTR SmallIcon, LPCWSTR LargeIcon, HWND hWnd, LONG32 ReplyMsg) { LPSTR szParam1 = WideToUTF8(Application); LPSTR szParam2 = WideToUTF8(SmallIcon); LPSTR szParam3 = WideToUTF8(LargeIcon); M_RESULT result = RegisterApp(szParam1, szParam2, szParam3, hWnd, ReplyMsg); delete [] szParam1; delete [] szParam2; delete [] szParam3; return result; }
int main(int argc, char* argv[]) { HANDLE hDevice = NULL; APP_REGISTRATION AppReg; HANDLE hWhistleup = NULL; HANDLE hWFChanged = NULL; char WhistleupName[MAX_PATH]; char WFChangedName[MAX_PATH]; IDriver_ReloadSettings(0); OSVERSIONINFO OSVer; AppReg.m_AppID = AVPG_Debug; wsprintf(WhistleupName, "MSDEVPassWhistleup", AppReg.m_AppID); wsprintf(WFChangedName, "MSDEVPassChanged", AppReg.m_AppID); AppReg.m_Priority = AVPG_INVISIBLEPRIORITY; AppReg.m_CurProcId = GetCurrentProcessId(); AppReg.m_ClientFlags = _CLIENT_FLAG_WITHOUTWATCHDOG; AppReg.m_BlueScreenTimeout = DEADLOCKWDOG_TIMEOUT; AppReg.m_LogFileName[0] = 0; OSVer.dwOSVersionInfoSize = sizeof(OSVer); GetVersionEx(&OSVer); hDevice = RegisterApp(&AppReg, &OSVer, &hWhistleup, &hWFChanged, WhistleupName, WFChangedName); if (hDevice == INVALID_HANDLE_VALUE) { DbgPrint(1, "Register Undebugger failed!\n"); } else { AddInvisibleProcess(hDevice, AppReg.m_AppID, &OSVer, "MSDEV*"); AddInvisibleProcess(hDevice, AppReg.m_AppID, &OSVer, "SSEXP*"); AddInvisibleProcess(hDevice, AppReg.m_AppID, &OSVer, "RATIONAL.EXE"); AddInvisibleProcess(hDevice, AppReg.m_AppID, &OSVer, "WINDBG*"); AddInvisibleProcess(hDevice, AppReg.m_AppID, &OSVer, "DEVENV*"); UnRegisterApp(hDevice, &AppReg, TRUE, &OSVer); } return 0; }
void DirectoryServer::ProcessRegisterApp(INetPacket* thePacket) { // The application info structure to build typeAppInfo anAppInfo; // Retrieve the application ID from the RegisterApp message *thePacket >> anAppInfo.id; // Retrieve the title, description, and website *thePacket >> anAppInfo.title; *thePacket >> anAppInfo.description; *thePacket >> anAppInfo.website; // Now attempt to register this application RegisterApp(anAppInfo); }
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(); }
//-------------------------------------------------------------------------- WindowsVideoDevice::WindowsVideoDevice() noexcept { m_kName = "windows"; m_kDesc = "Venus3D Windows Video Driver"; VE_ASSERT_EQ(RegisterApp(nullptr, 0, nullptr), true); }
void CDAuditWizard::OnOK() { // TODO: Add extra validation here UpdateData(TRUE); APP_REGISTRATION tmpAppReg; char ProcName[MAX_PATH]; char fo_mask[MAX_PATH]; char ro_mask[MAX_PATH]; HANDLE hDevice = NULL; HANDLE hWhistleup = NULL; HANDLE hWFChanged = NULL; char WhistleupName[MAX_PATH]; char WFChangedName[MAX_PATH]; tmpAppReg.m_CurProcId = GetCurrentProcessId(); tmpAppReg.m_AppID = AVPG_Driver_Specific; tmpAppReg.m_Priority = AVPG_INFOPRIORITY; lstrcpy(tmpAppReg.m_LogFileName, m_eLogFilename); DbgPrint(1, "new log name %s", tmpAppReg.m_LogFileName); tmpAppReg.m_ClientFlags = _CLIENT_FLAG_NONE; tmpAppReg.m_BlueScreenTimeout = DEADLOCKWDOG_TIMEOUT; wsprintf(ProcName, "%s", m_ProcName); wsprintf(fo_mask, "%s", m_fo_mask); wsprintf(ro_mask, "%s", m_reg_mask); wsprintf(WhistleupName, "OASWhistleup%d_%d", tmpAppReg.m_AppID, GetCurrentThreadId()); wsprintf(WFChangedName, "OADWFChanged%d_%d", tmpAppReg.m_AppID, GetCurrentThreadId()); hDevice = RegisterApp(&tmpAppReg, &g_OSVer, &(hWhistleup), &(hWFChanged), WhistleupName, WFChangedName); if (hDevice == INVALID_HANDLE_VALUE) { DbgPrint(1, "FSDrvLib - init failed!\n"); MessageBox("Sorry, but i can't init data for audit", "Error", MB_ICONINFORMATION); } else { switch (g_OSVer.dwPlatformId) { case VER_PLATFORM_WIN32_NT: // ----------------------------------------------------------------------------------------- // file operations if (m_fo_create) //open { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_NFIOR, IRP_MJ_CREATE, 0, 0, PreProcessing, NULL); } if (m_fo_write) // write { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_NFIOR, IRP_MJ_WRITE, IRP_MN_NORMAL, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_FIOR, FastIoWrite, 0, 0, PreProcessing, NULL); } if (m_fo_close) // close { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_NFIOR, IRP_MJ_CLEANUP, 0, 0, PreProcessing, NULL); } if (m_fo_read) // read { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_NFIOR, IRP_MJ_READ, IRP_MN_NORMAL, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_FIOR, FastIoRead, 0, 0, PreProcessing, NULL); } break; default: if (m_fo_create) //open { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_IFS, IFSFN_OPEN, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_IFS, IFSFN_OPEN, 1, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_IFS, IFSFN_OPEN, 2, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_IFS, IFSFN_OPEN, 3, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x0f, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x16, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x3c, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x3d, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x5a, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x5b, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x6c, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x71, 0, 0, PreProcessing, NULL); } if (m_fo_write) // write { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_IFS, IFSFN_WRITE, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x40, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x28, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x22, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x15, 0, 0, PreProcessing, NULL); } if (m_fo_close) // close { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_IFS, IFSFN_CLOSE, 2, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x10, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x3e, 0, 0, PreProcessing, NULL); } if (m_fo_read) // read { AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_IFS, IFSFN_READ, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x3f, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x21, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, fo_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_I21, 0x27, 0, 0, PreProcessing, NULL); } break; } // ----------------------------------------------------------------------------------------- // regestry if (m_reg_create) { AddFSFilter(hDevice, tmpAppReg.m_AppID, ro_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_REGS, CreateKey, 0, 0, PreProcessing, NULL); } if (m_reg_open) { AddFSFilter(hDevice, tmpAppReg.m_AppID, ro_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_REGS, OpenKey, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, ro_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_REGS, QueryKey, 0, 0, PreProcessing, NULL); } if (m_reg_query) { AddFSFilter(hDevice, tmpAppReg.m_AppID, ro_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_REGS, QueryMultipleValueKey, 0, 0, PreProcessing, NULL); AddFSFilter(hDevice, tmpAppReg.m_AppID, ro_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_REGS, QueryValueKey, 0, 0, PreProcessing, NULL); } if (m_reg_setval) { AddFSFilter(hDevice, tmpAppReg.m_AppID, ro_mask, ProcName, 1, FLT_A_LOG, FLTTYPE_REGS, SetValueKey, 0, 0, PreProcessing, NULL); } APPSTATE_REQUEST AppRequest; APPSTATE AppState; AppRequest = _AS_GoActive; IDriverState(hDevice, tmpAppReg.m_AppID, AppRequest, &AppState); UnRegisterApp(hDevice, &tmpAppReg, TRUE, &g_OSVer); CloseHandle(hDevice); } CDialog::OnOK(); }