Có một exe Windows mà không làm gì?


47

Có một exe "noop" nào đó ở đâu đó như là một phần của cài đặt Windows không? Tôi đang chuẩn bị một số công việc hàng loạt và các tác vụ theo lịch trình, và vì một vài lý do tôi muốn tham khảo một thực thi không có gì - tức là khởi chạy mà không có cửa sổ hiển thị và thoát ngay lập tức.

Liệu một thực thi như vậy có tồn tại trong cài đặt Windows thông thường ở bất cứ đâu? hoặc làm thế nào tôi có thể đến gần? Tôi không muốn phải phụ thuộc vào bất cứ điều gì chưa có trong Windows.


2
Từ quan sát: svchost.exekhông mở bất cứ điều gì.
ta.speot.is

@ baba.speot.is bạn nên bao gồm đó là một câu trả lời đầy đủ.
DuckMaestro

2
Nó có phải là một tập tin bên ngoài (thực thi) không? Nếu không, thì remlệnh có thể đã hoạt động (và tùy thuộc vào vị trí trong tệp bó mà nó đang được sử dụng, thậm chí có thể là ::biến thể).
Synetech

Câu trả lời:


51

Bạn có thể sử dụng rundll32:

  • Không có cửa sổ điều khiển
  • Không có tác dụng phụ
  • Chỉ cần 44 KB
  • Không cần tranh luận
  • Hoạt động trên mọi phiên bản Windows gần đây (XP, Vista, 7) và có thể trên mọi hệ thống dựa trên NT.

2
Vậy tại sao nó ở đó?
Nathan

6
@Nathan Với các đối số thích hợp, nó có thể gọi một hàm bên trong DLL
Andrea

Đúng. Ví dụ, hãy tưởng tượng một print.exechương trình đơn giản chỉ in ra các tham số mà nó được truyền. Không có bất kỳ đối số nào, nó sẽ không làm gì cả , nhưng đưa ra các đối số sẽ làm điều gì đó : > print foobar.
Synetech

@Andrea thì nó không làm gì cả trừ khi không có đối số. Mặc dù điều đó là không đủ theo yêu cầu của anh ấy.
barlop

3
Ngoại trừ nó có lẽ không thực sự là một no-op.
Andy Terra

36

Có một exe "noop" nào đó ở đâu đó như là một phần của cài đặt Windows không?

Có nghĩa là cụ thể một chương trình có nghĩa là không làm gì và không có gì khác? Có và không. Không, trong đó Windows không bao gồm một cái theo mặc định, nhưng nó bao gồm khả năng tự tạo một cái.


lựa chọn 1

Chạy notepad.exe , nhập các dòng sau và lưu nó dưới dạng C:\ret.scr(đừng quên dòng trống):

a
ret

rcx
1
n ret.com
w
q

Biên dịch nó với debug.exe tại dấu nhắc lệnh ( cmd.exe ) bằng lệnh sau:

C:\> debug < ret.scr

Bây giờ bạn có một chương trình, ret.com(trong C: \) có thể được sử dụng trong các tệp bó mà hoàn toàn không có gì (tốt, ngoài việc thoát, nếu tính).

Lưu ý : debugkhông được bao gồm trên các hệ thống 64 bit.


Lựa chọn 2

Trong Vista trở lên, .NET framework được bao gồm theo mặc định, do đó bạn cũng có thể tạo một bản gốc, Windows không làm gì .exevới C # ( tương thích 64 bit ):

Chạy notepad.exe và nhập các dòng sau, lưu nó dưới dạng C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Biên dịch nó với csc.exe tại dấu nhắc lệnh ( cmd.exe ) bằng lệnh sau:

C:\> csc ret.cs

Bây giờ bạn có một chương trình khác, ret.exe(trong C: \) có thể được sử dụng trong các tệp bó mà không có gì ngoài trả về.


2
Khốn kiếp .. mọi người nên ủng hộ bạn vì điều đó .. Tôi luôn muốn học ngôn ngữ lắp ráp .. Tôi chưa bao giờ sử dụng gỡ lỗi và nghĩ rằng nó đã chết với DOS. Rất vui vì tôi vấp phải câu trả lời của bạn ở đây. có thể thức ăn cho một sở thích trong tương lai!
barlop

12
Đối với tôi, csc.exekhông phải trên con đường của tôi, nhưng nó nằm ởC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
AlcubierreDrive

Điều gì về một EXE được biên dịch từ một chương trình C chỉ có một phương thức chính, như csc.exe của bạn. Điều đó có làm được nhiều hơn so với chương trình bạn đã viết trong gỡ lỗi không? ví dụ, có nhiều ngôn ngữ lắp ráp hơn ở đó với chương trình đó không?
barlop

1
@barlop, nói chung là có. Mặc dù một mainhàm trống có vẻ như vậy, hoặc ít nhất sẽ không có gì hơn một ret, nếu bạn mở một chương trình như vậy trong trình dịch ngược (hoặc thậm chí là trình soạn thảo hex), bạn sẽ thấy rằng nó còn nhiều hơn thế. Nó thường sẽ thiết lập tất cả các loại phân đoạn (mã, dữ liệu, v.v.), chuẩn bị ngăn xếp và đống, chưa kể nhập tất cả các loại hàm và chuỗi và như vậy ngay cả khi nó không thực sự sử dụng chúng.
Synetech

Tôi cần cái này để thay thế một số phần mềm hỗ trợ bên ngoài cũ cho bộ cài đặt, giảm kích thước gói, nơi phần mềm đó không còn cần thiết nữa, như DirectX và VCruntimes. Ngoài ra, nếu bạn không có hoặc muốn cài đặt bất kỳ trình biên dịch nào, hãy sử dụng trình biên dịch trực tuyến từ guidespoint.com/codingground.htmlm , sau khi biên dịch, tải xuống dự án và nó sẽ có exe bên trong kho lưu trữ.
JasonXA

10

Không có bất kỳ chương trình nào có trong Windows (mà tôi biết) sẽ thoát ngay lập tức khi được thực thi (ít nhất là về mục đích.)

Tuy nhiên, trong Windows Vista và mới hơn, có tiện ích timeout.exe . Timeout.exesẽ đợi một số giây được chỉ định và sau đó thoát. Ví dụ:

C:\>timeout /t 0 > nul:

Cài đặt timeout.exechờ trong 0 giây cũng gần bằng với việc bạn sẽ đến EXE ngay lập tức thoát ra.


3
Để thực hiện những gì Op muốn, hãy sử dụng thời gian chờ như "thời gian chờ / t 0> nul:" này - sẽ chạy lệnh hết thời gian mà không có bất kỳ đầu ra nào và sẽ thoát ngay lập tức.
misterjaytee

@misterjaytee ý kiến ​​hay.
Andrew Lambert

@Tom: Một cửa sổ giao diện điều khiển . Nó sẽ không mở một dấu nhắc lệnh trừ khi bạn chạy cmd.execụ thể.
tham lam

@grawity: Trình lập lịch tác vụ cần một bộ xử lý lệnh để lệnh chạy, do đó cửa sổ giao diện điều khiển sẽ hiển thị ngắn gọn.
Tamara Wijsman

@TomWijsman Hãy thử hết sức có thể, tôi không thể mở bất kỳ cửa sổ mới nào.
Andrew Lambert

4

Không có tham số "C: \ Windows \ hh.exe" (Microsoft® HTML Help Executable) sẽ không có gì và nó được bao gồm trong bất kỳ Phiên bản Windows nào tôi đoán.


2

wscript không có đối số nào không chạy tập lệnh nào cả và là tệp thực thi "GUI" (không mở giao diện điều khiển).


2
Khi tôi chạy wscript mà không có đối số, tôi nhận được "Cài đặt máy chủ Windows Script" xuất hiện. Windows 7 64-bit. Chạy wscript /bdường như làm việc mặc dù.
DuckMaestro

2

Tôi đã thử rndll32.exehh.execả hai sau đó đã không thay đổi% ERRORLEVEL%. Đây là một biến môi trường cho biết nếu lần thực thi cuối cùng thành công. Hoạt động như mã trả lại unix.

Lệnh noop của tôi dưới đây sẽ đặt% ERRORLEVEL% thành 0 là:

cd %CD%

Chỉ cần thay đổi thư mục làm việc để thư mục hiện tại.


0

lệnh echo offkhông làm gì trong tệp bó (.BAT). Mặc dù nó không phải là một tệp thực thi nhưng nó là một lệnh nội bộ của windows.


7
Trên thực tế nó không làm điều gì đó, nó quay lặp lại tắt. Đó có vẻ như không có gì nếu bạn có nó thiết lập để tắt, nhưng nếu bạn muốn lặp lại, thì chắc chắn nó không làm điều gì đó.
Synetech

6
và giống như rem, nó không phải là một cửa sổ exe
barlop

0

Biên dịch chương trình C ++ "Hello World" đơn giản để tạo một exe đơn giản sẽ thoát ngay lập tức.
Lưu mã sau trong tệp văn bản với một số tên như a.cpp:

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

Sau đó, biên dịch nó với trình biên dịch LATEST C ++ như MinGW cho Windows 7.
Trong trường hợp MinGW, hãy thực thi lệnh sau trong PowerShell hoặc Command Prompt: g++ path\a.cpp(Giả sử rằng bạn đã đặt biến PATH môi trường của vị trí nhị phân g ++ hoặc bạn đang ở trong thư mục nhị phân g ++ hoặc c : \ mingw \ bin theo mặc định). Sau khi thực hiện lệnh, bạn sẽ nhận được a.exe sẽ hiển thị Hello World và thoát. Xác minh bằng cách nhấp đúp vào ... cửa sổ cmd sẽ xuất hiện và biến mất ngay lập tức. Truy cập dòng lệnh sẽ hiển thị Hello World và đưa bạn trở lại dấu nhắc CLI.
Sau đó, bạn có thể di chuyển a.exe này trong system32 hoặc bất cứ nơi nào sâu bên trong Windows. Bạn thậm chí có thể cuộn nó ra trong đĩa cài đặt của Windows.


2
Tôi khá chắc chắn rằng trình biên dịch C ++ không có trong Windows.
Synetech

6
In "Hello World" hầu như không làm gì cả.
Keith Thompson

@Synetech Việc biên dịch chỉ được yêu cầu một lần miễn là kiến ​​trúc CPU giống nhau ..
Apple II

1
@KeithThndry Tôi không nghĩ nó sẽ can thiệp vào thuật toán BAT, nhưng nếu nó thực sự quan trọng, hãy thay thế Hello World bằng ký tự null ASCII ..
Apple II

5
> Tôi không nghĩ nó sẽ can thiệp vào thuật toán BAT, nhưng nếu nó thực sự quan trọng, hãy thay thế Hello World bằng ký tự null ASCII Hoặc chỉ cần loại bỏ hoàn toàn lệnh in.
Synetech

0

Bạn có thể viết no-op bằng C như vậy

void main() {

}

và biên dịch nó thành một tập tin .exe. Ví dụ: nếu bạn đã cài đặt Visual Studio, bạn có thể mở notepad, dán đoạn mã đó, lưu nó dưới dạng noop.c và trong dấu nhắc lệnh sử dụng cl noop.cvà nó sẽ xuất ra một noop.exetệp trong cùng một thư mục.

Bạn có thể hoặc không phải duyệt đến Microsoft Visual Studio X.0thư mục Program Filestrước và chạy vcvarsall.battừ dấu nhắc lệnh.


Bạn đã bỏ lỡ một phần của câu hỏi cho biết "một phần của cài đặt Windows". Ngoài ra, dấu chấm phẩy là dư thừa.
Synetech

-1

Mặc dù đây không phải là mục đích chính của công cụ này, bạn có thể sử dụng tùy chọn / donoth của WuInstall - bạn cũng có thể chỉ định mã trả lại sẽ được trả về - xem http://help.wuinstall.com


Điều đó dường như không được bao gồm trong XP hoặc 7. Nó có được bao gồm trong các phiên bản Máy chủ không?
Synetech
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.