Пожалуйста подскажите как решить такую задачу, при входе в систему (WINXP_SP2) вместо оболочки запускается моя программа и после выполнения определенных действий из нее необходимо запускать Explorer.exe как shell. Проблема в том, что explorer стартует как проводник, а не как оболочка и даже последующий запуск explorer.exe из диспетчера задач не приводит к старту оболочки, хотя при обычной загрузке и последующем завершении и запуске процесса explorer.exe из диспетчера задач оболочка включается нормально. Использую для запуска explorer`a CreateProcess с флагом CREATE_NEW_CONSOLE. Программу из которой запускается explorer прописываю в реестр: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Shell"="MyProgram.exe". Заранее большое спасибо.
незнаю подойдёт ли, просто идея, может изменить параметр шелл и сделать logoff/logon пробовал кстати восстановить этот параметр перед запуском експлорера?
Спасибо после изменения параметра Shell c "MyProgram.exe" на "explorer.exe" перед вызовом CreateProcess explorer запустился как оболочка но есть проблема, вот код программы-примера на С: HKEY key; PROCESS_INFORMATION *pinf=new(PROCESS_INFORMATION) ; STARTUPINFO *g=new(STARTUPINFO); g->cb=sizeof(STARTUPINFO); g->cbReserved2=0; g->dwFlags=STARTF_RUNFULLSCREEN; g->lpReserved=NULL; g->lpReserved2=NULL; g->lpTitle=NULL; g->lpDesktop="WinSta0\\default"; g->dwX=0; g->dwY=0; g->dwXSize=0; g->dwYSize=0; g->dwXCountChars=0; g->dwYCountChars=0; g->wShowWindow=5; g->dwFillAttribute=0; getche(); RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon",&key); RegSetValueEx(key,"shell",0,REG_SZ,(BYTE*)"explorer.exe",12); RegCloseKey(key); CreateProcess("d:\\windows\\explorer.exe",NULL,NULL,NULL,false,CREATE_NEW_CONSOLE,NULL,NULL,g,pinf); RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon",&key); RegSetValueEx(key,"shell",0,REG_SZ,(BYTE*)"c:\\windows\\MyProgram.exe",24); RegCloseKey(key); этот код почему-то запускает explorer как проводник, а при удалении строк после CreateProcess explorer легко стартует как оболочка. Но мне нужно чтобы моя программа всегда загружалась при старте системы. Вообще непонятно отчего зависит запуск explorer`а как оболочки или как проводника. А на счет logoff/logon не совсем понял.
Видимо осел думает так: Если в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell прописан експлорер и еще не запущен ни один мой экземпляр, то нужно стартовать в качестве шелла. Если в реестре в качестве шелла записано что-то другое, то ессно надо стартовать как проводник, ибо я не назначен шеллом. Дождись проверки реестра експлорером, например, жди появления панели задач, а после изменяй значение параметра обратно.