다음을 통해 공유


StartupTask 클래스

정의

시스템 시작 시 또는 사용자가 디바이스에 로그인할 때 실행되는 UWP 앱 또는 데스크톱 애플리케이션 백그라운드 작업을 나타냅니다.

public ref class StartupTask sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.ApplicationModel.StartupTaskContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class StartupTask final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.ApplicationModel.StartupTaskContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class StartupTask
Public NotInheritable Class StartupTask
상속
Object Platform::Object IInspectable StartupTask
특성

Windows 요구 사항

디바이스 패밀리
Windows Desktop Extension SDK (10.0.14393.0에서 도입되었습니다.)
API contract
Windows.ApplicationModel.StartupTaskContract (v1.0에서 도입되었습니다.)

설명

이 기능은 Windows 앱 패키지의 UWP 앱과 데스크톱 애플리케이션 모두에서 데스크톱 버전의 Windows에서 지원됩니다. 패키지된 데스크톱 애플리케이션(데스크톱 브리지 앱이라고도 함)에 대한 자세한 내용은 패키지 데스크톱 애플리케이션을 참조하세요. 패키지된 데스크톱 애플리케이션에 대한 지원은 Windows 10 1주년 업데이트(버전 1607) 및 Windows 10 Fall Creators Update UWP 앱(버전 1709)에 도입되었습니다.

앱은 windows.startup 시작 시 또는 사용자가 로그인할 때 활성화하려면 앱 패키지 매니페스트에 확장 범주를 추가해야 합니다. 이 확장을 추가해도 앱이 자동으로 시작되지는 않습니다.

UWP 앱은 UI 스레드에서 RequestEnableAsync 를 호출하여 사용자 동의 대화 상자를 트리거해야 합니다. 사용자가 동의하면 UWP 앱은 시작 또는 사용자 로그인 시 시작됩니다. UWP 시작 앱이 최소화되어 시작됩니다.

패키지된 데스크톱 앱에서 RequestEnableAsync 가 호출되면 사용자 동의 대화 상자가 표시되지 않습니다. 데스크톱 앱은 매니페스트에서 시작 작업을 사용으로 설정할 수 있습니다. 이 경우 RequestEnableAsync를 호출할 필요가 없습니다.

두 경우 모두 시작 기능을 사용하도록 설정하려면 사용자가 앱을 한 번 이상 시작하거나 설정의 시작 페이지에서 앱에 대한 시작 기능을 사용하도록 설정해야 합니다. 사용하도록 설정되면 사용자가 제어할 수 있으며 설정시작 페이지 또는 작업 관리자의 시작 탭을 통해 언제든지 앱의 사용 상태를 변경할 수 있습니다.

다음 확장 선언은 앱 패키지 매니페스트에 표시됩니다. 사용하는 선언은 시작 작업이 UWP 앱 또는 데스크톱 앱 백그라운드 작업인지 여부에 따라 달라집니다.

패키지된 데스크톱 앱 시작 작업 확장

<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"...>
...
<Applications>
    <Application ...>
        ...
        <Extensions>
          <uap5:Extension
            Category="windows.startupTask"
            Executable="MyDesktopApp.exe"
            EntryPoint="Windows.FullTrustApplication">
            <uap5:StartupTask
              TaskId="MyStartupId"
              Enabled="false"
              DisplayName="My Desktop App" />
          </uap5:Extension>
        </Extensions>
    </Application>
</Applications>
attribute 설명
xmlns:uap5 일반 UAP 계약 버전 5 네임스페이스를 지정합니다.

참고: Fall Creators 업데이트(Windows 버전 1703)의 경우 Windows Desktop 특정 XML 네임스페이스를 대신 xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10", 사용하고 위 예제에서 의 uap5: 항목을 로 desktop: 바꿉니다.
범주 "windows.startupTask"이 이어야 합니다.
실행 파일 시작할 .exe 상대 경로입니다.
EntryPoint "Windows.FullTrustApplication"이 이어야 합니다.
TaskId 작업의 고유 식별자입니다. 앱은 이 식별자를 사용하여 이 클래스의 API를 호출하여 프로그래밍 방식으로 시작 작업을 사용하거나 사용하지 않도록 설정할 수 있습니다.
Enabled 먼저 RequestEnableAsynctrue 호출할 필요 없이 앱이 시작되도록 설정되어 있음을 나타내기 위해 패키징된 데스크톱 앱에 대해 로 설정할 수 있습니다.
표시 이름 작업 관리자에 표시되는 작업의 이름입니다.

패키지된 데스크톱 앱의 경우 여러 startupTask 확장이 허용되며 각각 다른 실행 파일을 지정할 수 있습니다.

UWP 앱 시작 작업 확장

<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" ...>
...
<Applications>
    <Application ...>
        ...
        <Extensions>
          <uap5:Extension Category="windows.startupTask">
            <uap5:StartupTask
              TaskId="MyStartupId"
              Enabled="false"
              DisplayName="Test startup" />
          </uap5:Extension>
      </Extensions>
    </Application>
</Applications>
attribute 설명
xmlns:uap5 UWP 앱은 일반 UAP 계약 버전 5 네임스페이스를 사용합니다.
범주 값이 있어야 합니다. "windows.startupTask"
TaskId 작업에 대한 고유 식별자입니다. 앱은 이 식별자를 사용하여 이 클래스의 API를 호출하여 프로그래밍 방식으로 시작 작업을 사용하거나 사용하지 않도록 설정할 수 있습니다.
Enabled UWP 앱의 경우 이 특성은 무시되며 사용자가 앱을 처음 시작하고 사용자가 시작 시 활성화를 사용하도록 설정하는 앱의 요청을 확인할 때까지 기능이 암시적으로 비활성화됩니다.
표시 이름 작업 관리자에 표시되는 UWP 앱의 이름입니다.
실행 파일 무시됩니다. 제공된 경우 비어 있거나 null일 수 없습니다. 이 Package.appxmanifest 파일이 속한 앱은 암시적 실행 파일입니다.
EntryPoint 무시됩니다. 제공된 경우 비어 있거나 null일 수 없습니다. 진입점이 암시되어 있습니다.

UWP 앱에는 하나의 실행 파일 항목과 windows.startupTask 확장만 있어야 합니다.
windows.startupTask 확장은 Windows 데스크톱에서 실행되는 UWP 앱에서만 사용할 수 있습니다.

WWA(Windows Web App) 시작 작업 확장

<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" .m..>
...
<Applications>
    <Application ...>
        ...
        <Extensions>
          <uap5:Extension Category="windows.startupTask" StartPage="EntryPage">
            <uap5:StartupTask
              TaskId="MyStartupId"
              DisplayName="Test startup"/>
          </uap5:Extension>
      </Extensions>
    </Application>
</Applications>
attribute 설명
xmlns:uap5 UWP 앱은 일반 UAP 계약 버전 5 네임스페이스를 사용합니다.
StartPage WWA가 시작될 때 표시할 페이지의 이름입니다.
범주 값이 있어야 합니다. "windows.startupTask"
TaskId 작업에 대한 고유 식별자입니다. 앱은 이 식별자를 사용하여 이 클래스의 API를 호출하여 프로그래밍 방식으로 시작 작업을 사용하거나 사용하지 않도록 설정할 수 있습니다.
표시 이름 작업 관리자에 표시되는 UWP 앱의 이름입니다.

WWA 앱의 경우 실행 파일, EntryPointEnables 는 무시되며 누락되거나 null일 수 있습니다.

예제

다음 코드는 StartupTask를 만듭니다.

StartupTask startupTask = await StartupTask.GetAsync("MyStartupId"); // Pass the task ID you specified in the appxmanifest file
switch (startupTask.State)
{
    case StartupTaskState.Disabled:
        // Task is disabled but can be enabled.
        StartupTaskState newState = await startupTask.RequestEnableAsync(); // ensure that you are on a UI thread when you call RequestEnableAsync()
        Debug.WriteLine("Request to enable startup, result = {0}", newState);
        break;
    case StartupTaskState.DisabledByUser:
        // Task is disabled and user must enable it manually.
        MessageDialog dialog = new MessageDialog(
            "You have disabled this app's ability to run " +
            "as soon as you sign in, but if you change your mind, " +
            "you can enable this in the Startup tab in Task Manager.",
            "TestStartup");
        await dialog.ShowAsync();
        break;
    case StartupTaskState.DisabledByPolicy:
        Debug.WriteLine("Startup disabled by group policy, or not supported on this device");
        break;
    case StartupTaskState.Enabled:
        Debug.WriteLine("Startup is enabled.");
        break;
}

속성

State

시작 작업의 상태(사용자가 사용, 사용 안 함 또는 사용 안 함)를 가져옵니다.

TaskId

시작 작업의 ID를 가져옵니다.

메서드

Disable()

시작 작업을 사용하지 않도록 설정합니다.

GetAsync(String)

ID별로 시작 작업을 가져옵니다.

GetForCurrentPackageAsync()

현재 앱 패키지에 대한 모든 시작 작업을 가져옵니다.

RequestEnableAsync()

시작 작업을 사용하도록 요청합니다. 작업 관리자를 사용하여 사용자가 작업을 사용하지 않도록 설정한 경우 이 메서드는 선택한 작업을 재정의하지 않으며 사용자가 작업을 수동으로 다시 사용하도록 설정해야 합니다.

적용 대상

추가 정보