Je souhaite ajouter à mon application UWP la possibilité d'arrêter sa machine locale lors de l'invocation par un clic sur un bouton, cependant, aucune méthode que j'ai essayée jusqu'à présent n'a fonctionné. Par exemple:

J'ai essayé de commander l'arrêt de Windows, mais la commande que j'ai utilisée ne fonctionne pas spécifiquement lorsqu'elle est invoquée par mon application.

shutdown /s /t 120

Par conséquent, j'ai essayé d'utiliser du code C# natif pour le faire. Cependant, l'utiliser me dit qu'il ne possède pas les autorisations appropriées pour le faire.

ShutdownManager.BeginShutdown(Windows.System.ShutdownKind.Shutdown, TimeSpan.FromSeconds(120));

J'ai essayé de nombreuses méthodes mais je n'arrive tout simplement pas à résoudre le problème.

Fichiers pertinents

MainPage.xaml.cs

using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using System;
using Windows.System;

// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409.
// Delete the extra namespaces when the application is complete.

namespace Shutdown_Roulette
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private void Button_click(object sender, RoutedEventArgs e)
        {
            ShutdownManager.BeginShutdown(Windows.System.ShutdownKind.Shutdown, TimeSpan.FromSeconds(120));
        }
    }
}

Package.appxmanifest

<?xml version="1.0" encoding="utf-8"?>

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
  IgnorableNamespaces="uap mp iot">

  <Identity
    Name="7eb73f1e-b159-4fd0-aab9-4158e57ba08a"
    Publisher="CN=rokeb"
    Version="1.0.0.0" />

  <mp:PhoneIdentity PhoneProductId="7eb73f1e-b159-4fd0-aab9-4158e57ba08a" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

  <Properties>
    <DisplayName>Shutdown Roulette</DisplayName>
    <PublisherDisplayName>Master Roke Julian Lockhart Beedell</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>

  <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
  </Dependencies>

  <Resources>
    <Resource Language="x-generate"/>
  </Resources>

  <Applications>
    <Application Id="App"
      Executable="$targetnametoken$.exe"
      EntryPoint="Shutdown_Roulette.App">
      <uap:VisualElements
        DisplayName="Shutdown Roulette"
        Square150x150Logo="Assets\Square150x150Logo.png"
        Square44x44Logo="Assets\Square44x44Logo.png"
        Description="Shutdown Roulette"
        BackgroundColor="transparent">
        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" ShortName="Shutdown Roulette">
        </uap:DefaultTile >
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
  </Applications>

  <Capabilities>
    <iot:Capability Name="systemManagement"/></Capabilities>
</Package>

Veuillez noter que je souhaite utiliser cette commande sur Windows 10, pas sur Windows 10 IoT ; J'essaie simplement d'utiliser ces commandes car c'est la seule autre façon dont je peux penser à le faire sans compter sur PowerShell, Python ou le processeur de commande Windows/invite de commande.

0
Roke Julian Lockhart Beedell 12 nov. 2020 à 12:58

1 réponse

Meilleure réponse

Selon la description de ShowdownManager, il a besoin du prise en charge du SDK IOT, ce qui signifie qu'il s'agit d'une API limitée à la plate-forme (valable uniquement sur les appareils IOT).

Dans les appareils de bureau Windows 10, UWP n'a pas l'autorisation d'éteindre l'appareil.

0
Richard Zhang - MSFT 12 nov. 2020 à 11:35