taskmgr.exe được gọi với một đối số của Windows 7


13

Tôi nhận thấy khi tôi nhấn Ctrl+ Alt+ Delvà nhấp vào Trình quản lý tác vụ, Windows gọi taskmgr.exe /3là lệnh. Một số trang web tuyên bố Trình quản lý tác vụ không có đối số dòng lệnh.

Trình quản lý tác vụ trong Process Explorer

Tại sao Windows đính kèm đối số này?


Hơn nữa, có khác, trọng lượng ít hơn LaunchTM.exetrong %windir%\System32mà làm cho nó thậm chí nhiều hơn khó hiểu như tôi không thể tìm ra, dựa trên tìm kiếm google của tôi là tốt, mục đích của sự tồn tại và những gì nó là tốt cho nói chung.

@ Chinggis6 Không có LaunchTM.exetrong Windows 7, tôi nghĩ bạn đang ở trên Windows 8. Tại sao không tạo một câu hỏi mới liên quan đến vấn đề này ở đây trên superuser? ;)
Martin Braun

Câu trả lời:


13

Phân tích

Rõ ràng đó không phải là một hành vi được ghi chép lại. Tôi đã làm một số xét nghiệm và ghi nhận những phát hiện của mình:

  • Bấm chuột phải vào thanh tác vụ và bấm Bắt đầu Trình quản lý tác vụ .

    "C:\Windows\system32\taskmgr.exe" /4
    
  • Nhấn Ctrl+ Shift+ Esc.

    taskmgr.exe /2
    
  • Nhấn Ctrl+ Alt+ Delvà nhấp vào Bắt đầu Trình quản lý tác vụ .

    taskmgr.exe /3
    
  • Bắt đầu Trình quản lý tác vụ không nâng cao và nhấp vào nút Hiển thị các quy trình từ tất cả người dùng .

    "C:\Windows\system32\taskmgr.exe" /1
    
  • Nhập hoặc dán taskmgr.exevào thanh tìm kiếm menu Bắt đầu và nhấn Enter; nhấn Win+ R, nhập hoặc dán taskmgr.exevào hộp văn bản và nhấn Enter; điều hướng đến System32thư mục và bấm đúp vào taskmgr.exetệp thực thi; khởi động tiện ích Cấu hình hệ thống ( msconfig.exe), bấm vào tab Công cụ , chọn mục Trình quản lý tác vụ từ danh sách và bấm Khởi chạy .

    "C:\Windows\system32\taskmgr.exe"
    
  • Mở một dấu nhắc lệnh, gõ hoặc dán taskmgr.exevà nhấn Enter.

    taskmgr.exe
    

Nhận xét

  • Mọi thứ hoạt động theo cách tương tự trong giai đoạn phát triển của Windows 8, cho đến Bản phát hành xem trước. Windows Vista và các hệ điều hành trước đó không bị ảnh hưởng.

  • Việc thực thi nhập một vài hàm API (cụ thể là GetCommandLineWCommandLineToArgvW) được sử dụng để truy xuất và phân tích các đối số dòng lệnh.

  • Tự khởi động chương trình bằng cách sử dụng bất kỳ đối số nào ở trên dường như không có hiệu quả rõ rệt.

Nếu tôi phải đưa ra một phỏng đoán có giáo dục, tôi sẽ nói rằng tham số số có nghĩa là một chỉ báo khởi động bên trong, có thể được sử dụng cho mục đích gỡ lỗi và sau đó bị bỏ lại.


5
"taskmgr / 7 / startup" => bắt đầu với tab Khởi động ở phía trước! (Windows 8.1) - nhưng không phải "taskmgr / startup / 7" hay "taskmgr / startup" đều làm được điều đó! (Tín dụng bổ sung: Vui lòng giải thích thuật toán phân tích cú pháp dòng lệnh của taskmgr.exe đưa ra bằng chứng này ...)
davidbak 7/07/2015

1
@davidbak taskmgr /anything /startuphoạt động, như /startuplà đối số thứ hai.
Michel de Ruiter

@MicheldeRuiter - Vâng. Nó sẽ giết họ để cho phép tranh luận theo thứ tự nào? Gây ra việc làm thêm trong QA? Trì hoãn ngày tàu? HUH????
davidbak

2

Một vài lưu ý:

Chỉ vì một lệnh được gửi, không có nghĩa là một chương trình chấp nhận các đối số đó, hoặc bất kỳ.

Ví dụ:

Tôi đã gọi taskmanager bằng mệnh lệnh kỳ quặc của riêng tôi và hành vi không thay đổi:

nhập mô tả hình ảnh ở đây

Từ quan điểm lập trình cơ bản, bất kỳ ứng dụng nào cũng sẽ có một phương thức chính của một số loại mà các đối số có thể được truyền vào. Ví dụ, một ứng dụng Windows Form C # cơ bản trông giống như:

private void Form1_Load(object sender, EventArgs e)
        {

        }

Nếu tôi chuyển một số đối số hài hước vào, không có gì xảy ra với ứng dụng, nhưng Process Explorer sẽ bắt và hiển thị chúng.

nhập mô tả hình ảnh ở đây

Nếu tôi quyết định rõ ràng để xử lý chúng, tuy nhiên, bạn sẽ nhận được sự tương tác từ lệnh.

nhập mô tả hình ảnh ở đây

Và tất cả những gì tôi phải làm là thay đổi điểm vào của biểu mẫu một chút:

private void Form1_Load(object sender, EventArgs e)
        {
            string arguments = Environment.GetCommandLineArgs()[1];

            this.Text = arguments;
        }

Bây giờ, trở lại câu hỏi của bạn về lý do tại sao nó có:

Nếu bạn truy cập taskmgr.exe từ ctrl+ alt+ delphương pháp, bạn thực sự thấy đối số lệnh "/ 3". Ngoài ra nếu bạn sử dụng ctrl+ shift+ escnó vượt qua / 2 và nếu bạn nhấp chuột phải vào thanh tác vụ và nhấp vào "Khởi động Trình quản lý tác vụ" thì công tắc hiển thị là / 4.

Tất cả những điều này khiến tôi cho rằng có thể có một cái gì đó mà Windows cần biết, hoặc có lẽ gần như đã được triển khai cho TASkmanager mà chúng ta không biết. Ví dụ: bảo mật trong Windows có thể muốn biết liệu ctrl+ alt+ delđã được sử dụng để gọi taskmgr.exe và không phải là tập lệnh hay người dùng. Một lần nữa, suy đoán thuần túy nhưng những chủ đề như thế này khiến tôi nghĩ rằng nó có thể ít nhất là một ý nghĩ.


Đối với tl khét tiếng ; dr

Để biết lý do tại sao Windows vượt qua các lệnh này, chúng tôi có thể cần một thành viên của nhóm phát triển của Microsoft hoặc mã nguồn. Có thể không có câu trả lời tốt hơn.

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.