So, I found such a solution.
void OpenWith(CString strFileNameToOpen)
{
TCHAR lpPathBuffer[MAX_PATH];
GetSystemDirectory(lpPathBuffer, MAX_PATH);
CString strSystemDir = lpPathBuffer;
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
strSystemDir.Format(_T("rundll32.exe %s\\shell32.dll,OpenAs_RunDLL %s"), lpPathBuffer, strFileNameToOpen);
CreateProcess(NULL, strSystemDir.GetBuffer(), NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
source
share