Windows 7 작업 스케줄러 숨겨진 설정이 작동하지 않습니다

Windows 7 작업 스케줄러 숨겨진 설정이 작동하지 않습니다

내 컴퓨터에서 매시간 실행되는 데몬 프로세스가 있는데 확인란을 선택했는데도 Hidden작동하지 않습니다.작업 속성

매시간 작업이 실행되지만 내 .NET 콘솔 앱이 실행 중인 검은색 명령 창이 표시됩니다. 이는 작업이 완료될 때까지 계속 표시되었다가 사라집니다. 이것은 매우 짜증나는 일입니다. 왜냐하면 이 팝업이 나타나 내가 하고 있는 모든 작업을 방해하기 때문입니다.

여기에 이미지 설명을 입력하세요

정말 숨기고 싶은데 어떻게 해결할 수 있나요?

답변1

"사용자의 로그온 여부에 관계없이 실행" 확인란을 선택하면 실행 파일이 백그라운드에서 실행됩니다.

답변2

Windows 7 예약 작업 실행이 숨겨진 이유는 무엇입니까?왜 이런 일이 발생하는지 설명해야합니다.

또한,이 TechNet 설명일반 작업 속성상태:

작업의 일반 속성은 작업 속성 또는 작업 만들기 대화 상자의 일반 탭에 표시됩니다. 작업의 일반 속성에는 작업 이름, 작성자, 설명, 보안 옵션, 작업이 구성된 운영 체제,작업을 숨길지 여부를 제어하는 ​​속성.

작업 폴더에 작업을 생성할 때 작업 이름을 지정해야 합니다. 동일한 작업 폴더에 있는 경우 두 작업은 동일한 이름을 가질 수 없습니다. 작업 설명은 선택 사항입니다.

태스크 보안 옵션은 태스크가 실행되는 보안 컨텍스트를 지정합니다. 자세한 내용은 작업 보안 컨텍스트를 참조하세요.

기본적으로 숨겨진 작업은 작업 스케줄러 사용자 인터페이스에 표시되지 않습니다. 보기 메뉴에서 숨겨진 작업 표시를 선택하면 숨겨진 작업을 볼 수 있습니다. 작업 속성 또는 작업 만들기 대화 상자의 일반 탭에서 숨김 확인란을 클릭하면 작업을 숨길 수 있습니다.

이는 확인란이 숨겨지기만 한다는 의미가 아닙니까?과제 그 자체예약된 실제 프로그램이 아닌 스케줄러의 UI에서?

답변3

알았어, 좀 더 조사한 끝에 알아냈어이 답변StackOverflow에서:

백그라운드에서 실행되도록 예약된 작업을 설정하려면 작업을 실행하는 사용자를 SYSTEM으로 변경하면 화면에 아무 것도 나타나지 않습니다.

코멘트이는 작업에 대한 모든 권한을 부여하므로 귀찮을 수 있지만 이 경우에는 허용된다는 점을 지적합니다.

하지만 그래도 Hidden이 작업을 수행하지 않으면 어떻게 됩니까? 그리고 프로그램을 실행하는 사용자 계정이 표시 여부와 왜 관련이 있습니까?

답변4

기본 설정을 그대로 두고 창을 표시하지 않고 실행을 시작하는 짧은 사용자 정의 프로그램을 작성합니다. 예를 들어, 명령 프롬프트 창을 띄우지 않고 배치 파일을 실행하려면 아래 코드를 사용하세요. "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());
        }
    }
}

관련 정보