RUNDLL32.EXE shell32, OpenAs_RunDLL path
int nRes = (int)ShellExecute(NULL, _T("open"), strLocalPath, NULL, NULL, SW_SHOW);
if (SE_ERR_NOASSOC == nRes)
{
CString strCmdLine;
TCHAR szSystemDir[MAX_PATH] = { 0 };
if (GetSystemDirectory(szSystemDir, sizeof(szSystemDir) / sizeof(szSystemDir[0])))
{
//获取全路径
TCHAR szRundll32Dir[MAX_PATH];
wcscpy_s(szRundll32Dir, szSystemDir);
PathAppend(szRundll32Dir, L"rundll32.exe");
strCmdLine = szRundll32Dir;
strCmdLine += L" ";
strCmdLine += L"shell32,OpenAs_RunDLL";
strCmdLine += L" ";
strCmdLine += strLocalPath;
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi = { 0 };
if (CreateProcess(NULL, strCmdLine.GetBuffer(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
}
}