/
bool _killExplorer()
{
CString strCmd1_KillExplorer = _T("taskkill /f /im explorer.exe");
PROCESS_INFORMATION pi;
STARTUPINFO si = { sizeof si };
bool bCmd = true;
TCHAR szCmdTmp[MAX_PATH];
_tcscpy(szCmdTmp, (LPCTSTR)strCmd1_KillExplorer);
if (CreateProcess(NULL, (LPTSTR)szCmdTmp, NULL, NULL, NULL, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {
WaitForSingleObject(pi.hProcess, INFINITE);
DWORD dwCode = 0;
if (!GetExitCodeProcess(pi.hProcess, &dwCode))
bCmd = false;
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
else {
bCmd = false;
}
return bCmd;
} // _killExplorer()
bool _startExplorer()
{
CString strCmd2_StartExplorer = _T("%systemroot%\sysnative\cmd.exe /c start /B explorer.exe");
TCHAR szCmdTmp[MAX_PATH];
DWORD dwSize = MAX_PATH;
ExpandEnvironmentStrings( (LPCTSTR)strCmd2_StartExplorer, szCmdTmp, dwSize );
PROCESS_INFORMATION pi;
STARTUPINFO si = { sizeof si };
bool bCmd = true;
if (CreateProcessW( NULL, (LPTSTR)szCmdTmp, NULL, NULL, NULL, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {
WaitForSingleObject(pi.hProcess, INFINITE);
DWORD dwCode = 0;
if (!GetExitCodeProcess(pi.hProcess, &dwCode))
bCmd = false;
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
else {
bCmd = false;
}
return bCmd;
} // _startExplorer()
void RestartExplorer()
{
if (_killExplorer()) {
_startExplorer();
}
}