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 でサポートされています。 パッケージ化されたデスクトップ アプリケーション (デスクトップ ブリッジ Apps とも呼ばれます) の詳細については、「デスクトップ アプリケーションのパッケージ化」を参照してください。 パッケージ化されたデスクトップ アプリケーションのサポートは、Windows 10 Anniversary Update (バージョン 1607) と、Windows 10 Fall Creators Updateの UWP アプリ (バージョン 1709) で導入されました。

起動時またはユーザーが windows.startup ログインしたときにアクティブ化するには、アプリで拡張機能カテゴリをアプリ パッケージ マニフェストに追加する必要があります。 この拡張機能を追加しても、それ自体が自動的にアプリを起動することはありません。

UWP アプリは、ユーザーの同意ダイアログをトリガーするために、UI スレッドから RequestEnableAsync を呼び出す必要があります。 ユーザーが同意すると、UWP アプリは起動時またはユーザー ログイン時に開始されます。 UWP スタートアップ アプリは最小化されて開始されることに注意してください。

パッケージ化されたデスクトップ アプリから RequestEnableAsync が呼び出された場合、ユーザーの同意ダイアログは表示されません。 デスクトップ アプリは、マニフェストでスタートアップ タスクを Enabled に設定できます。この場合、 RequestEnableAsync を呼び出す必要はありません。

どちらの場合も、スタートアップ機能を有効にするには、ユーザーがアプリを少なくとも 1 回起動するか、[設定] の [スタートアップ] ページでアプリのスタートアップ機能を有効にする必要があります。 有効にすると、ユーザーは制御され、[設定][スタートアップ] ページまたはタスク マネージャーの [スタートアップ] タブを使用して、アプリの有効な状態をいつでも変更できます。

次の拡張機能宣言は、アプリ パッケージ マニフェストに含まれます。 使用する宣言は、スタートアップ タスクが 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>
属性 説明
xmlns:uap5 一般的な UAP コントラクト バージョン 5 名前空間を指定します。

注: Fall Creators 更新プログラム (Windows バージョン 1703) では、代わりに Windows デスクトップ固有の XML 名前空間を使用し、xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10",上の例で のuap5:desktop:出現箇所を に置き換えます。
カテゴリ "windows.startupTask"を指定する必要があります。
[実行可能ファイル] 開始する .exe への相対パス。
EntryPoint "Windows.FullTrustApplication"を指定する必要があります。
TaskId タスクの一意の識別子。 この識別子を使用して、アプリはこのクラスの API を呼び出して、スタートアップ タスクをプログラムで有効または無効にすることができます。
有効 最初に RequestEnableAsync を呼び出す必要なく、アプリがスタートアップ用に有効になっていることを示すために、パッケージ化されたデスクトップ アプリの場合は を にtrue設定できます。
DisplayName タスク マネージャーに表示されるタスクの名前。

パッケージ化されたデスクトップ アプリの場合、複数の 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>
属性 説明
xmlns:uap5 UWP アプリでは、一般的な UAP コントラクト バージョン 5 名前空間が使用されます。
カテゴリ 値を指定する必要があります "windows.startupTask"
TaskId タスクの一意識別子。 この識別子を使用して、アプリはこのクラスの API を呼び出して、スタートアップ タスクをプログラムで有効または無効にすることができます。
有効 UWP アプリの場合、この属性は無視され、ユーザーが最初にアプリを起動し、起動時にアクティブ化を有効にするアプリの要求をユーザーが確認するまで、この機能は暗黙的に無効になります。
DisplayName タスク マネージャーに表示される UWP アプリの名前。
[実行可能ファイル] 無視されます。 指定した場合は、空または null にすることはできません。 この Package.appxmanifest ファイルが属するアプリは、暗黙的な実行可能ファイルです。
EntryPoint 無視されます。 指定した場合は、空または null にすることはできません。 エントリ ポイントは暗黙的です。

UWP アプリには 、実行可能 ファイル エントリと windows.startupTask 拡張機能を 1 つだけ含める必要があります。
windows.startupTask 拡張機能は、Windows デスクトップで実行される UWP アプリでのみ使用できます。

Windows Web App (WWA) スタートアップ タスク拡張機能

<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>
属性 説明
xmlns:uap5 UWP アプリでは、一般的な UAP コントラクト バージョン 5 名前空間が使用されます。
StartPage WWA の起動時に表示するページの名前。
カテゴリ 値を指定する必要があります "windows.startupTask"
TaskId タスクの一意識別子。 この識別子を使用して、アプリはこのクラスの API を呼び出して、スタートアップ タスクをプログラムで有効または無効にすることができます。
DisplayName タスク マネージャーに表示される UWP アプリの名前。

WWA アプリの場合、 実行可能ファイルEntryPointおよび Enable は無視され、見つからないか 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()

スタートアップ タスクを有効にすることを要求します。 タスク マネージャーを使用してユーザーがタスクを無効にした場合、このメソッドは選択をオーバーライドせず、ユーザーは手動でタスクを再度有効にする必要があります。

適用対象

こちらもご覧ください