Czy gdzieś w ramach instalacji systemu Windows istnieje exe w stylu „noop”? Przygotowuję niektóre zadania wsadowe i zaplanowane i z kilku powodów chciałbym odwołać się do pliku wykonywalnego, który nic nie robi - tj. Uruchamia się bez widocznego okna i natychmiast kończy działanie.
Czy taki plik wykonywalny istnieje w zwykłej instalacji systemu Windows w dowolnym miejscu? lub jak mogę się zbliżyć? Nie chcę polegać na niczym, co nie jest jeszcze zawarte w systemie Windows.
svchost.exe
niczego nie otwiera.rem
polecenie mogło zadziałać (i zależnie od tego, gdzie w pliku wsadowym jest używany, być może nawet::
wariant).Odpowiedzi:
Możesz użyć
rundll32
:źródło
print.exe
program, który po prostu drukuje parametry, które są przekazywane. Bez żadnych argumentów, by to zrobić nic , ale dając mu argumenty robi coś :> print foobar
.Czyli konkretnie program, który ma nic nie robić i nic więcej? Tak i nie. Nie, w systemie Windows domyślnie nie ma takiego, ale obejmuje on możliwość samodzielnego wykonania.
opcja 1
Uruchom notepad.exe , wpisz następujące wiersze i zapisz je jako
C:\ret.scr
(nie zapomnij pustego wiersza):Skompiluj go za pomocą debug.exe w wierszu polecenia ( cmd.exe ) za pomocą następującego polecenia:
Masz teraz program
ret.com
(w C: \), który może być używany w plikach wsadowych, który absolutnie nic nie robi (cóż, poza wyjściem, jeśli to się liczy).Uwaga :
debug
nie jest dostępny w systemach 64-bitowych.Opcja 2
W systemie Vista i nowszych framework .NET jest domyślnie dołączony, więc możesz również stworzyć natywny system Windows, który nic nie robi
.exe
z C # ( 64-bit kompatybilny ):Uruchom notepad.exe i wpisz następujące wiersze, zapisując go jako
C:\ret.cs
:Skompiluj go za pomocą csc.exe w wierszu polecenia ( cmd.exe ) za pomocą następującego polecenia:
Masz teraz inny program
ret.exe
(w C: \), którego można używać w plikach wsadowych, który nie zwraca nic.źródło
csc.exe
nie było na mojej drodze, ale było zlokalizowane naC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
main
funkcja wydaje się, jakby była, a przynajmniej powinna być niczym więcej niżret
, jeśli otworzysz taki program w dezasemblatorze (lub nawet edytorze szesnastkowym), zobaczysz, że jest to o wiele, wiele więcej. Zwykle konfiguruje wszelkiego rodzaju segmenty (kod, dane itp.), Przygotowuje stosy i sterty, nie wspominając o importowaniu wszelkiego rodzaju funkcji i łańcuchów, a nawet jeśli nigdy tak naprawdę ich nie używa.Nie ma żadnych programów dołączonych do systemu Windows (o których wiem), które natychmiast wychodzą po uruchomieniu (przynajmniej celowo).
W systemie Windows Vista i nowszym istnieje jednak narzędzie timeout.exe .
Timeout.exe
poczeka określoną liczbę sekund, a następnie wyjdzie. Na przykład:Ustawienie
timeout.exe
oczekiwania na 0 sekund jest prawie tak blisko, jak dojdzie do EXE, który natychmiast kończy działanie.źródło
cmd.exe
konkretnie.Bez parametrów „C: \ Windows \ hh.exe” (plik wykonywalny pomocy Microsoft® HTML) nic nie robi i, jak sądzę, jest zawarty w dowolnej wersji Windows.
źródło
wscript
bez argumentów w ogóle nie uruchamia skryptu i jest wykonywalnym „GUI” (nie otwiera konsoli).źródło
wscript /b
Wydaje się, że bieganie działa.Próbowałem
rndll32.exe
ahh.exe
jednak oboje wtedy nie zmieniało% ERRORLEVEL%. Jest to zmienna środowiskowa, która informuje, czy ostatni plik wykonywalny się powiódł. Działa jak kod powrotu unixa.Moje poniższe polecenie noop spowoduje ustawienie% ERRORLEVEL% na zero:
Po prostu zmieniam katalog roboczy na bieżący.
źródło
polecenie
echo off
nic nie robi w pliku wsadowym (.BAT). Chociaż nie jest to plik wykonywalny, jest to wewnętrzne polecenie systemu Windows.źródło
Skompiluj prosty program C ++ „Hello World”, aby utworzyć prosty plik exe, który natychmiast się zakończy.
Zapisz następujący kod w pliku tekstowym o nazwie takiej jak a.cpp:
Następnie skompiluj go za pomocą kompilatora NAJNOWSZY C ++, takiego jak MinGW dla Windows 7.
W przypadku MinGW, wykonaj następujące polecenie w PowerShell lub wierszu polecenia:
g++ path\a.cpp
(Zakładając, że ustawiłeś zmienną środowiskową PATH w lokalizacji binarnej g ++ lub w katalogu binarnym g ++, tj. C : \ mingw \ bin domyślnie). Po wykonaniu polecenia otrzymasz a.exe, który wyświetli Hello World i zakończy działanie. Zweryfikuj, klikając dwukrotnie ... okno cmd pojawi się i zniknie natychmiast. Dostęp do wiersza poleceń spowoduje wyświetlenie Hello World i powrót do wiersza polecenia CLI.Następnie możesz przenieść ten plik a.exe w systemie 32 lub w dowolnym miejscu głęboko w systemie Windows. Możesz nawet wdrożyć go na dysku instalacyjnym systemu Windows.
źródło
Możesz napisać no-op w C tak
i skompiluj go do pliku .exe. Na przykład, jeśli masz zainstalowany program Visual Studio, możesz otworzyć notatnik, wkleić ten fragment kodu, zapisać go jako noop.c, a następnie użyć wiersza polecenia
cl noop.c
, aby wyświetlićnoop.exe
plik w tym samym folderze.Być może najpierw musisz przejść do
Microsoft Visual Studio X.0
folderuProgram Files
i uruchomićvcvarsall.bat
z wiersza polecenia.źródło
Chociaż nie jest to głównym celem tego narzędzia, możesz użyć opcji / donothing programu WuInstall - możesz także określić kod powrotu, który powinien zostać zwrócony - patrz http://help.wuinstall.com
źródło