Poniżej znajduje się hack, ale za to, czego potrzebuję za jego grzywnę.
Stworzyłem program C #, który pokazuje tekst EULA i ma przycisk Zgadzam się i nie zgadzam.
Ustawiłem HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
uruchomić ten program.
Po uruchomieniu komputera pojawia się zwykły monit logowania.
Po zalogowaniu uruchamia się niestandardowy program EULA.
Nie ma powłoki eksploratora, menu startowego, tła itp. (Tego właśnie chcę).
Przycisk nie zgadza się wyłącza komputer i działa dobrze.
Chcę, aby przycisk Agree ładował normalną powłokę Eksploratora Windows (menu Start, tło itp.).
Użyłem następującego polecenia C #: Process.Start("explorer.exe");
Jednak uruchamia to okno eksploratora, a nie powłokę. Chcę uruchomić powłokę.
czego mi brakuje?
Odpowiedzi:
W Windows10, aby ponownie uruchomić Pulpit Eksploratora, musisz ustawić klucz rejestru Shell na „explorer.exe” i zabić proces „sihost.exe” lub ponownie uruchomić nowy proces „sihost.exe”.
źródło
Robię dokładnie to samo, co robisz, oto jak uruchamiam Explorer
i działa dobrze.
Teraz robię to w sesji RDP za pomocą ta polityka grupowa (
Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Remote Session Environment\Start a program on connection
) nie poprzez plik rejestru, którego używasz, więc może dlatego działa dla mnie, a nie dla ciebie.Inną rzeczą, którą mogę robić inaczej, jest również wołanie
explorer.WaitForExit();
w moim kodzie i poczekaj, aż eksplorator zamknie się przed zamknięciem mojej aplikacji.Spróbuj użyć sposobu, w jaki rozpoczynam eksplorację i sprawdź, czy działa dla Ciebie.
źródło
Explorer musi zobaczyć niektóre spełnione warunki, aby uruchomić go jako powłokę:
Sądząc po twoim pytaniu, brakuje ci przynajmniej części 2.
źródło
Zmodyfikuj rejestr, umieść explorer.exe w powłoce, uruchom nowy proces explorer.exe (nie masz uruchomionego żadnego procesu explorer.exe) i zwróć powłokę do swojej powłoki (pusta wartość, jeśli potrzeba).
źródło