Bộ lập lịch tác vụ Windows 7 Cài đặt ẩn không hoạt động


37

Tôi đã có một quy trình trình nền mà tôi chạy trên máy của mình mỗi giờ và mặc dù tôi đã kiểm tra Hiddenhộp nhưng nó không hoạt động.Thuộc tính nhiệm vụ

Mỗi giờ, tác vụ chạy, nhưng nó hiển thị cửa sổ lệnh màu đen, trong đó ứng dụng .NET Console của tôi đang chạy. Điều này vẫn hiển thị cho đến khi nhiệm vụ hoàn thành, và sau đó biến mất. Điều này rất khó chịu, vì nó bật lên và làm gián đoạn bất cứ điều gì tôi đang làm:

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

Tôi thực sự muốn nó ẩn, vậy làm thế nào tôi có thể sửa nó?



2
Câu hỏi được liên kết không đề cập đến cài đặt Ẩn .
bwDraco

@DragonLord Bạn đã đúng, nhưng thật khó để biết câu hỏi này là "Tại sao Công việc ẩn không hoạt động?", Hoặc nếu đó thực sự là "Làm thế nào để tôi ngăn hộp này hiển thị?".
Ƭᴇcʜιᴇ007

@ techie007: Câu hỏi làm thế nào để ẩn cửa sổ, đó là những gì tôi nghĩ hộp kiểm ẩn làm. Nhưng bài viết được liên kết đó liên quan đến các tập lệnh và bộ lập lịch tác vụ dòng lệnh và tập lệnh shell, chứ không phải GUI lập lịch tác vụ được hiển thị trong bài viết của tôi. Bạn có biết làm thế nào để sử dụng GUI để thực hiện điều này?
Joshua Frank

Trong hầu hết các trường hợp, bạn không thể làm điều đó chỉ từ GUI Lập lịch tác vụ. Thông thường, bạn cần sửa đổi những gì đang được chạy bởi Tác vụ (nghĩa là: tệp bó hoặc tập lệnh) để ẩn cửa sổ phụ bật lên. Đó là những gì các câu hỏi khác bao gồm, và đó là lý do tại sao tôi đánh dấu nó là một bản sao có thể. :)
cʜιᴇ007

Câu trả lời:


45

Chọn hộp kiểm "Chạy xem người dùng có đăng nhập hay không" và tệp thực thi sẽ chạy trong nền.


4
Đơn giản vậy thôi. Câu trả lời này nên được chấp nhận.
giải quyết

Cảm ơn bạn. Tôi đã có vấn đề ngược lại. Tôi muốn giao diện điều khiển hiển thị, nhưng không phải!
Randy Stegbauer

12
Điều này đòi hỏi phải lưu mật khẩu với tác vụ và sẽ phá vỡ các thay đổi mật khẩu vào lần tới (điều thường được thi hành bởi các chính sách miền trong môi trường doanh nghiệp).
Philipp Munin

@PhilippMunin Trong một số trường hợp sử dụng nhất định, bạn có thể thoát khỏi việc đánh dấu vào hộp kiểm cho 'Không lưu trữ mật khẩu. Tác vụ sẽ chỉ có quyền truy cập vào tài nguyên máy tính cục bộ. ', Điều này sẽ cản trở việc cung cấp mật khẩu.
Jimadine

20

Tại sao Windows 7 tác vụ theo lịch trình chạy ẩn? nên giải thích tại sao điều này xảy ra

Ngoài ra, mô tả TechNet này của Thuộc tính tác vụ chung :

Các thuộc tính chung của một tác vụ được hiển thị trên tab Chung của hộp thoại Tạo thuộc tính tác vụ hoặc Tạo tác vụ. Các thuộc tính chung của một tác vụ bao gồm tên tác vụ, tác giả, mô tả, tùy chọn bảo mật, hệ điều hành mà tác vụ được cấu hình và thuộc tính kiểm soát xem tác vụ có bị ẩn hay không .

Khi bạn tạo một tác vụ trong một thư mục tác vụ, bạn phải đặt tên cho tác vụ. Không có hai tác vụ có thể có cùng tên nếu chúng nằm trong cùng một thư mục tác vụ. Mô tả nhiệm vụ là tùy chọn.

Tùy chọn bảo mật tác vụ xác định bối cảnh bảo mật mà tác vụ chạy bên dưới. Để biết thêm thông tin, xem Bối cảnh bảo mật nhiệm vụ.

Theo mặc định, các tác vụ ẩn không được hiển thị trong giao diện người dùng Lập lịch tác vụ. Bạn có thể xem các tác vụ ẩn khi Hiển thị tác vụ ẩn được chọn trong menu Xem. Bạn thực hiện một tác vụ bị ẩn khi bạn bấm vào hộp kiểm Ẩn trên tab Chung của hộp thoại Tác vụ hoặc Tạo tác vụ.

Không phải điều này có nghĩa là hộp kiểm chỉ ẩn nhiệm vụ khỏi giao diện người dùng của người lập lịch chứ không phải chương trình thực tế đã được lên lịch?


Nó làm cho nó nghe như vậy, nhưng nó cũng không làm điều đó; Tôi có thể thấy các nhiệm vụ trong Trình lập lịch biểu. Nó sẽ là một giao diện người dùng kỳ lạ làm việc với các đối tượng mà bạn không thể nhìn thấy.
Joshua Frank

2
Bạn đã kiểm tra Nhiệm vụ ẩn trong menu Xem chưa?
Karan

1
Ah, tôi đã làm, vì vậy mà giải thích nó. Cảm ơn. Tất nhiên, vì "Ẩn" không làm những gì tôi nghĩ, tôi không cần các nhiệm vụ ẩn. Vì đây là công cụ chỉ dành cho Quản trị viên và vì Quản trị viên thường không muốn ẩn những thứ đó khỏi họ, nên nhiệm vụ ẩn phục vụ mục đích gì?
Joshua Frank

2
Ai biết được, chắc chắn tôi chưa bao giờ sử dụng tùy chọn đó. Câu hỏi của bạn là lần đầu tiên tôi nhìn lên để xem nó đã làm gì. :) BTW, thay vì thay đổi người dùng thành HỆ THỐNG, việc chọn "Chạy xem người dùng có đăng nhập hay không" giải quyết vấn đề?
Karan

18

Được rồi, sau một số nghiên cứu thêm tôi đã tìm thấy câu trả lời này trên StackOverflow:

Để thiết lập Tác vụ theo lịch để chạy ở chế độ nền, hãy thay đổi Người dùng đang chạy tác vụ thành HỆ THỐNG và sẽ không có gì xuất hiện trên màn hình của bạn.

Một bình luận chỉ ra rằng điều này cấp toàn quyền cho nhiệm vụ, có thể gây phiền nhiễu, nhưng được chấp nhận trong trường hợp này.

Tuy nhiên, những gì sẽ Hiddenlàm, nếu nó không làm điều này? Và tại sao tài khoản người dùng chạy chương trình có liên quan gì đến việc nó có hiển thị không?


Đọc câu trả lời của tôi ở trên, có thể giải thích những gì nó làm.
Karan

2
Câu trả lời SU này chạm vào ý tưởng chạy nó như một người dùng khác để tránh nhìn thấy đầu ra là tốt. Tôi không nghĩ có bất kỳ lý do cụ thể nào để chạy nó dưới dạng "Hệ thống", bạn có thể tạo người dùng chỉ để chạy tác vụ đó, với các quyền bạn chọn để cấp cho họ.
Ƭᴇcʜιᴇ007

Nhưng tại sao người dùng được cấu hình sẽ ảnh hưởng đến khả năng hiển thị của cửa sổ?
Joshua Frank

1
Hãy nhớ rằng SYSTEMtài khoản không có quyền truy cập vào các tệp được mã hóa EFS của người dùng khác.
Zero3

11

GIẢI PHÁP TUYỆT VỜI

  • Thay đổi Người dùng đang chạy tác vụ thành HỆ THỐNG - sẽ thực thi lệnh của bạn không thuộc người dùng của bạn
  • Kiểm tra "Chạy xem người dùng có đăng nhập hay không" - yêu cầu lưu mật khẩu với tác vụ và sẽ ẩn một cách bí mật các thay đổi mật khẩu vào lần tiếp theo (điều thường được thi hành bởi chính sách miền trong môi trường doanh nghiệp)

Nếu đó là những công cụ giải quyết cho bạn, giải pháp cuối cùng là tạo tệp tập lệnh JS như bên dưới, sẽ chạy lệnh của bạn trong cửa sổ ẩn, đợi lệnh của bạn chấm dứt và trả về mã lỗi của nó:

WScript.CreateObject("WScript.Shell")
.Run('powershell -File C:\\Path\\To\\MyScript.ps1', 0,true);

Lưu tệp này dưới dạng tệp js (myjob.js) và thêm tệp này vào lịch trình tác vụ của bạn: nhập mô tả hình ảnh ở đây Thưởng thức


Ngoài ra, bạn nên sử dụng Wscript.exe để chạy tập lệnh của mình chứ không phải Cscript. Nếu không, cửa sổ giao diện điều khiển màu đen có thể bật lên trong giây lát.
BBK

Đây là một ví dụ khác về VBScript đang hoạt động với tôi: faqforge.com/windows/ Kẻ
BBK

2

"Chạy cho dù người dùng có đăng nhập hay không" sẽ cho phép tùy chọn ẩn hoạt động. Lưu ý rằng bạn cần cung cấp thông tin đăng nhập của bạn sau khi bạn chọn điều này.


1

Cả hai:

  • Thay đổi Người dùng đang chạy tác vụ thành HỆ THỐNG "
  • và Kiểm tra "Chạy xem người dùng có đăng nhập hay không"

sẽ ngăn cửa sổ lệnh đen, nhưng lưu ý những nhược điểm: bạn sẽ không thể làm việc với một số công cụ tự động hóa GUI như 'AutoIt' hoặc SendKeys trong PowerShell, khi Windows khởi chạy các tác vụ trong môi trường kiểu không đầu.


1

Tôi để các thiết lập mặc định và viết các chương trình tùy chỉnh ngắn sinh ra thực thi mà không có cửa sổ hiển thị. Ví dụ, để chạy tệp bó mà không bật lên cửa sổ nhắc lệnh, hãy sử dụng mã bên dưới. Đặt tác vụ để sinh ra "RunBatchFile.exe (path_to_batch_file)".

class Program
{
    static void Main(string[] args)
    {
        try
        {
            if (args.Length < 1)
            {
                Console.WriteLine("No batch file");
                Console.WriteLine("Usage: RunBatchFile (path)");
                Environment.Exit(1);
            }

            if (!File.Exists(args[0]))
            {
                Console.WriteLine("Batch file {0} not found", args[0]);
                Console.WriteLine("Usage: RunBatchFile (path)");
                Environment.Exit(1);
            }

            // Set to batch file's folder
            string startIn = Path.GetDirectoryName(args[0]);
            if (!string.IsNullOrEmpty(startIn) && Directory.Exists(startIn))
                Directory.SetCurrentDirectory(startIn);

            // Start
            ProcessStartInfo pi = new ProcessStartInfo()
            {
                FileName = args[0],
                UseShellExecute = true,
                WindowStyle = ProcessWindowStyle.Hidden
            };
            Process.Start(pi);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception: " + ex.ToString());
        }
    }
}

1
Và tôi cho rằng phép thuật được ẩn giấu cụ thể là do ProcessWindowStyle.Hiddenphần cụ thể, đúng không? Tôi thấy một cái gì đó về nó ở đây: msdn.microsoft.com/en-us/l Library / từ
Pimp Juice IT

Vâng, đó là những gì che giấu cửa sổ. Không có nó, cửa sổ sẽ bật lên.
AresAvatar

1
Mã này như được viết sẽ hoạt động trên mọi thứ chạy với ShellExecute.
AresAvatar

0

Tôi đã gặp vấn đề này với các nhiệm vụ theo lịch trình của powershell (mà tôi đã triển khai thông qua GPO). Tôi đã kết thúc việc gói nó trong một cửa sổ lệnh:

CMD
/Q /D /C "powershell.exe -Command "& '\\MYDOMAIN\netlogon\MyPowerShellScript.ps1'""

Trong khi điều này có thể trả lời câu hỏi, nó sẽ là một câu trả lời tốt hơn nếu bạn có thể cung cấp một số lời giải thích tại sao nó làm như vậy.
DavidPostill
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.