Zauważyłem, kiedy naciskam Ctrl+ Alt+ Deli klikam Menedżer zadań, Windows wywołuje taskmgr.exe /3
jako polecenie. Niektóre witryny twierdzą, że Menedżer zadań nie ma argumentów wiersza poleceń.
Dlaczego system Windows dołącza ten argument?
windows-7
command-line
task-manager
command-line-arguments
Martin Braun
źródło
źródło
LaunchTM.exe
w%windir%\System32
co czyni go jeszcze bardziej mylące, ponieważ nie mogłem zorientować się, w oparciu o moje google, jak również, jego celem istnienia i to, co jest dobre w ogóle.LaunchTM.exe
Windows 7, myślę, że jesteś na Windows 8. Dlaczego nie utworzyć nowego pytania na ten temat tutaj w superużytkowniku? ;)Odpowiedzi:
Analiza
Najwyraźniej nie jest to udokumentowane zachowanie. Zrobiłem kilka testów i zanotowałem swoje wyniki:
Kliknij pasek zadań prawym przyciskiem myszy, a następnie kliknij polecenie Uruchom Menedżera zadań .
Naciśnij Ctrl+ Shift+ Esc.
Naciśnij Ctrl+ Alt+ Deli kliknij Uruchom Menedżera zadań .
Uruchom Menedżera zadań bez uprawnień i kliknij przycisk Pokaż procesy od wszystkich użytkowników .
Wpisz lub wklej
taskmgr.exe
w pasku wyszukiwania menu Start i naciśnij Enter; naciśnij Win+ R, wpisz lub wklejtaskmgr.exe
w polu tekstowym i naciśnij Enter; przejdź doSystem32
folderu i kliknij dwukrotnietaskmgr.exe
plik wykonywalny; uruchom narzędzie konfiguracji systemu (msconfig.exe
), kliknij kartę Narzędzia , wybierz pozycję Menedżer zadań z listy i kliknij Uruchom .Otwórz wiersz polecenia, wpisz lub wklej
taskmgr.exe
i naciśnij Enter.Uwagi
Podobnie działało to w fazie rozwoju systemu Windows 8, aż do wersji zapoznawczej. Nie ma to wpływu na Windows Vista i wcześniejsze systemy operacyjne.
Plik wykonywalny importuje kilka funkcji API (mianowicie
GetCommandLineW
iCommandLineToArgvW
), które są używane do pobierania i analizowania argumentów wiersza poleceń.Ręczne uruchomienie programu przy użyciu dowolnego z powyższych argumentów nie wydaje się mieć zauważalnego wpływu.
Gdybym musiał zgadywać, to powiedziałbym, że parametr numeryczny miał być wewnętrznym wskaźnikiem uruchamiania, prawdopodobnie używanym do celów debugowania, a następnie pozostawionym w tyle.
źródło
taskmgr /anything /startup
działa, tak/startup
jak drugi argument.Kilka uwag:
To, że polecenie zostało wysłane, nie oznacza, że program akceptuje te argumenty lub jakiekolwiek inne.
Na przykład:
Zadzwoniłem do menedżera zadań z moim dziwnym poleceniem, a zachowanie się nie zmieniło:
Z punktu widzenia podstawowego programowania każda aplikacja będzie miała jakąś główną metodę, w której można przekazywać argumenty . Na przykład podstawowa aplikacja Windows Form C # wygląda mniej więcej tak:
Jeśli przekażę jakieś śmieszne argumenty, aplikacja nic się nie dzieje, ale Process Explorer je złapie i wyświetli.
Jeśli jednak wyraźnie zdecyduję się je obsłużyć, uzyskasz interakcję z polecenia.
I wszystko, co musiałem zrobić, to nieznacznie zmienić punkt wejścia formularza:
Wróćmy teraz do pytania, dlaczego tak jest:
Jeśli uzyskujesz dostęp do taskmgr.exe z metody ctrl+ alt+ del, rzeczywiście widzisz argument polecenia „/ 3”. Również jeśli użyjesz ctrl+ shift+, escto przejdzie / 2 i jeśli klikniesz prawym przyciskiem myszy pasek zadań i klikniesz „Uruchom Menedżera zadań”, pokazany przełącznik to / 4.
Wszystko to prowadzi mnie do wniosku, że być może Windows musi coś wiedzieć, a może został już prawie zaimplementowany w Menedżerze zadań, o którym nie wiemy. Na przykład zabezpieczenia w systemie Windows mogą chcieć wiedzieć, czy do wywołania taskmgr.exe użyto ctrl+ alt+, dela nie skrypt lub użytkownik. Ponownie, czysta spekulacja, ale takie wątki sprawiają, że myślę, że mogła to być przynajmniej myśl.
Dla niesławnego tl; dr
Aby wiedzieć, dlaczego system Windows przekazuje te polecenia, prawdopodobnie potrzebujemy członka zespołu programistów Microsoft lub kodu źródłowego. Nie może być lepszej odpowiedzi.
źródło