Есть ли Windows exe, который ничего не делает?

48

Есть ли где-нибудь исполняемый файл "noop" как часть установки Windows? Я готовлю несколько пакетных заданий и запланированных заданий, и по нескольким причинам я хотел бы сослаться на исполняемый файл, который ничего не делает - то есть запускается без видимого окна и сразу завершает работу.

Существует ли такой исполняемый файл в обычной установке Windows где-нибудь? или как я могу приблизиться? Я не хочу зависеть от того, что еще не включено в Windows.

DuckMaestro
источник
2
Из наблюдения: svchost.exeничего не открывается.
ta.speot.is
@ todda.speot.is вы должны включить это в качестве полного ответа.
DuckMaestro
2
Должен ли это быть внешний (исполняемый) файл? Если нет, то remкоманда могла бы работать (и в зависимости от того, где в пакетном файле она используется, возможно, даже ::вариант).
Synetech

Ответы:

51

Вы можете использовать rundll32:

  • Нет консольного окна
  • Нет побочных эффектов
  • Всего 44 кб
  • Никаких аргументов не требуется
  • Работает на всех последних версиях Windows (XP, Vista, 7) и, вероятно, на каждой системе на базе NT.
Andrea
источник
2
Так почему же это там?
Натан
6
@ Натан С соответствующими аргументами он может вызывать функцию внутри DLL
Andrea
Правильно. Например, представьте простую print.exeпрограмму, которая просто распечатывает параметры, которые ей передаются. Без каких - либо аргументов , он не будет делать ничего , но придав ему аргументы , что - то делает : > print foobar.
Synetech
@ Андреа тогда ничего не сделает, если не будет аргументов. Хотя это не достаточно по его требованиям.
Барлоп
3
За исключением того, что это, вероятно, не совсем неоперативный.
Энди Терра
36

Есть ли где-нибудь исполняемый файл "noop" как часть установки Windows?

Имеется в виду, в частности, программа, которая предназначена для ничего и ничего другого? Да и нет. Нет, Windows не включает один по умолчанию, но он включает в себя возможность сделать его самостоятельно.


Опция 1

Запустите notepad.exe , введите следующие строки и сохраните их как C:\ret.scr(не забудьте пустую строку):

a
ret

rcx
1
n ret.com
w
q

Скомпилируйте его с помощью debug.exe в командной строке ( cmd.exe ) с помощью следующей команды:

C:\> debug < ret.scr

Теперь у вас есть программа ret.com(на C: \), которую можно использовать в пакетных файлах, которая абсолютно ничего не делает (кроме выхода, если это считается).

Примечание : debugне включено в 64-битных системах.


Вариант 2

В Vista и более поздних версиях .NET Framework включена по умолчанию, так что вы также можете сделать собственный, Windows ничего не делать .exeс C # ( 64-битная совместимость ):

Запустите notepad.exe и введите следующие строки, сохранив их как C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Скомпилируйте его с помощью csc.exe в командной строке ( cmd.exe ) с помощью следующей команды:

C:\> csc ret.cs

Теперь у вас есть другая программа ret.exe(в C: \), которую можно использовать в пакетных файлах, которая ничего не делает, кроме возврата.

Synetech
источник
2
Черт бы побрал ... все должны тебя за это поблагодарить ... Я всегда хотел выучить ассемблер ... Я никогда не использовал отладку и думал, что он умер с DOS. Я так рада, что наткнулась на ваш ответ здесь. может быть, корм для будущего хобби!
Бароп
12
Для меня csc.exeне было на моем пути, но он был расположен по адресуC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
AlcubierreDrive
как насчет EXE, которое скомпилировано из программы на C, которая имеет основной метод, такой как ваш csc.exe? Это делает намного больше, чем программа, которую вы написали в отладке? например, есть ли намного больше ассемблера с этой программой?
Барлоп
1
@ barlop, как правило, да. Хотя пустая mainфункция выглядит так, как она есть, или, по крайней мере, она должна быть не чем иным ret, как если бы вы открывали такую ​​программу в дизассемблере (или даже в hex-редакторе), вы увидите, что это намного, намного больше, чем это. Он обычно настраивает все виды сегментов (код, данные и т. Д.), Подготавливает стеки и кучи, не говоря уже об импорте всех видов функций и строк и тому подобное, даже если он на самом деле их никогда не использует.
Synetech
Мне понадобилось это, чтобы заменить какое-то старое внешнее программное обеспечение поддержки для установочного комплекта, уменьшив размер пакета, где это программное обеспечение больше не требуется, например, DirectX и VCruntimes. Также, если у вас нет или вы хотите установить какой-либо компилятор, используйте онлайн-компиляторы с tutorialspoint.com/codingground.htm , после компиляции загрузите проект, и он будет иметь exe-файл внутри архива.
JasonXA
10

Нет никаких программ, включенных в Windows (о которых я знаю), которые сразу же завершаются при выполнении (по крайней мере, нарочно).

Однако в Windows Vista и новее есть утилита timeout.exe . Timeout.exeбудет ждать указанное количество секунд и затем выйти. Например:

C:\>timeout /t 0 > nul:

Настройка timeout.exeожидания в течение 0 секунд примерно так же близка, как вы попадете в EXE-файл, который немедленно завершает работу.

Эндрю Ламберт
источник
3
Чтобы сделать то, что хочет операционная система, используйте timeout, например, «timeout / t 0> nul:», - который запустит команду timeout без каких-либо выходных данных и немедленно завершит работу.
Господин
@misterjaytee хорошая идея.
Эндрю Ламберт
@Tom: окно консоли . Он не откроет командную строку, если вы не запустите cmd.exeспециально.
Гравитация
@grawity: планировщику заданий необходим командный процессор для выполнения команды, поэтому окно консоли кратко отобразится.
Тамара Вийсман
@ TomWijsman. Как ни старайся, я не могу открыть ни одного нового окна.
Эндрю Ламберт
4

Без параметров «C: \ Windows \ hh.exe» (исполняемый файл справки Microsoft® HTML) ничего не происходит, и я полагаю, что он включен в любую версию Windows.

ProCompSys
источник
2

wscript без аргументов не запускает сценарий вообще и является исполняемым файлом «GUI» (не открывает консоль).

grawity
источник
2
Когда я запускаю wscript без аргументов, я получаю «Настройки хоста скрипта Windows», который появляется. Windows 7 64-битная. wscript /bКажется, работает бег .
DuckMaestro
2

Я пробовал rndll32.exeи hh.exeно оба тогда не изменял% ERRORLEVEL%. Это переменная среды, которая сообщает, был ли последний исполняемый файл успешным. Работает как код возврата Unix.

Моя команда noop ниже установит% ERRORLEVEL% в ноль:

cd %CD%

Просто изменив рабочий каталог на текущий.

Невиш
источник
0

команда echo offничего не делает внутри пакетного файла (.BAT). Хотя это не исполняемый файл, это внутренняя команда Windows.

obaqueiro
источник
7
На самом деле это действительно сделать что - то, он поворачивает вторя прочь. Это может показаться бесполезным, если вы отключите его, но если вы хотите эхо, то оно, безусловно, что-то делает.
Synetech
6
и, как rem, это не windows exe
barlop
0

Скомпилируйте простую программу C ++ «Hello World», чтобы создать простой exe-файл, который немедленно завершится.
Сохраните следующий код в текстовом файле с именем, например, a.cpp:

#include<iostream>
int main()
{ std::cout<<"Hello World";
return 0;
}

Затем скомпилируйте его с помощью компилятора LATEST C ++, такого как MinGW для Windows 7.
В случае MinGW выполните следующую команду в PowerShell или командной строке: g++ path\a.cpp(Предполагая, что вы установили переменную PATH среды двоичного расположения g ++ или находитесь в двоичном каталоге g ++, т.е. c : \ mingw \ bin по умолчанию). После выполнения команды вы получите a.exe, который отобразит Hello World и завершит работу. Проверьте двойным щелчком мыши ... Окно cmd появится и исчезнет сразу. Доступ к командной строке отобразит Hello World и вернет вас к командной строке.
Затем вы можете переместить этот a.exe в system32 или куда-нибудь вглубь Windows. Вы даже можете развернуть его на установочном диске Windows.

Apple II
источник
2
Я уверен, что компилятор C ++ не включен в Windows.
Synetech
6
Печать "Hello World" вряд ли делает ничего.
Кит Томпсон
@Synetech Компиляция требуется только один раз, если архитектура процессора одинакова ..
Apple II
1
@KeithThompson Я не думаю, что это помешает алгоритму BAT, но если это действительно имеет значение, замените Hello World на нулевой символ ASCII ..
Apple II
5
> Я не думаю, что это помешает алгоритму BAT, но если это действительно имеет значение, замените Hello World на нулевой символ ASCII или просто полностью удалите команду печати.
Synetech
0

Вы можете написать неоперативный в C, как так

void main() {

}

и скомпилируйте его в файл .exe. Например, если у вас установлена ​​Visual Studio, вы можете открыть блокнот, вставить этот фрагмент, сохранить его как noop.c и использовать в командной строке, cl noop.cи он выведет noop.exeфайл в ту же папку.

Возможно, вам придется или не нужно сначала просматривать Microsoft Visual Studio X.0папку Program Filesи запускать vcvarsall.batиз командной строки.

Энди Терра
источник
Вы пропустили ту часть вопроса, которая гласила «часть установки Windows». Кроме того, точка с запятой является избыточной.
Synetech
-1

Хотя это не является основной целью этого инструмента, вы можете использовать параметр / donothing в WuInstall - вы также можете указать код возврата, который должен быть возвращен - см. Http://help.wuinstall.com

HSN
источник
Это, кажется, не входит в XP или 7. Это включено в версии сервера?
Synetech