2017-09-29 1 views
0

Wir betreiben eine App "zugewiesenen Zugriff" auf unserem Gerät, das keine Netzwerkverbindung verwendet. Das Produkt wird hochgefahren und führt sofort die UWP-App unseres Unternehmens unter Windows 10 Build 1703 aus.Einstellen der Zeit durch ein UWP geschrieben in C++/CX

Dieses Gerät ist international und es ist erforderlich, die Uhrzeit und das Datum basierend auf der aktuellen Region und lokalen DST-Regeln festzulegen.

Da UWP-Anwendungen standardmäßig sandboxed sind, sind solche Systemaufrufe normalerweise nicht verfügbar. Diese App wird jedoch niemals im Store platziert. Gibt es also eine mögliche Problemumgehung, die wir verwenden können, um die Zeit festzulegen, da wir uns nicht an die Geschäftsregeln halten müssen? (Eine "voll vertrauenswürdige" UWP-App? Ich verstehe, dass dies auf konvertierte Win32-Anwendungen beschränkt sein kann)

Derzeit werden die Uhrzeit und das Datum durch die Windows :: Globalisation :: Calendar-Methoden gelesen, aber dies hat keine "Setter" Methode (vermutlich aufgrund der App-Einschränkungen)

Eine andere Möglichkeit kann sein, eine win32-Anwendung von der App starten, die die Zeit setzt; vielleicht die Zeit und das Datum als Kommandozeilenparameter übergeben. Ist das die beste Lösung und wird es tatsächlich funktionieren? Kann dem App-Manifest etwas hinzugefügt werden, das diese Funktionalität möglicherweise aktiviert?

Nicht ganz eine Beschränkung für unsere spezielle App wäre in der Lage, das Datum und die Uhrzeit einzustellen, da es die Verwendung von Zeitstempeln usw.

+0

Es gibt noch etwas anderes zu finden, eine API zu betrachten Zeit zu setzen, wird die App nicht die ausreichenden Berechtigungen verfügt. Wenn Sie beispielsweise eine Desktop-App aus der UWP-App starten möchten, können Sie dies mithilfe von [FullTrustProcessLauncher] tun (https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.fulltrustprocesslauncher#Windows_ApplicationModel_FullTrustProcessLauncherFullTrustProcessForAppAsync_System_String_). Sie erhalten einen Fehler wie "Die angeforderte Operation erfordert eine Erhöhung". – kennyzx

Antwort

0

Diese App wird nie im Laden

Sie denken konnte, mit Brokered Windows Runtime Components platziert werden. Dies wird dadurch ermöglicht, dass seitengeladene Universal Windows Platform-Apps mit Desktop-Prozessen außerhalb des App-Containers interagieren können.

Dieser Blog über Cheat-Sheet for using Brokered Windows Runtime Components for side-loaded Windows Store apps ist auch für Ihre Details.

Hier ist ein Codebeispiel für Ihre Referenz: https://code.msdn.microsoft.com/windowsapps/Brokered-Windows-Runtime-9d64cada

+0

Danke - das scheint mir am nächsten zu sein, was ich mir vorgestellt habe. Ich habe das in der Vergangenheit nicht genutzt, also muss ich experimentieren, um zu sehen, ob es das Problem letztendlich löst. Ich werde es als Antwort akzeptieren. Sehr geschätzt. – Keano

0

ich denke, macht Sie besser dran ist WPF und dann in den Laden zu portieren über die Desktop-Brücke.

WPF ist so ziemlich wie uwp minus der Sandbox, du kannst ein neues wpf-Projekt auf blend machen und dasselbe xaml verwenden, das du in der uwp-App benutzt hast.

Dies funktioniert nur auf Desktops und Surface Hubs, aber denken Sie daran.

ps: das Starten einer Win32-App von uwp ist möglich, aber es wird auch nur auf den Desktop beschränkt, so dass Sie auf jeden Fall besser WPF verwenden.

https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root

+0

Vielen Dank für die vorgeschlagene Antwort. In diesem Fall ist die Anwendung groß und bereits aus reinem C++ portiert (sie verwendet C++/CX nur beim ABI).Es ist in Ordnung, die Ausführung auf den Desktop zu beschränken, aber es wäre nicht praktisch, in C# neu zu schreiben, um auf dieses einzelne Feature zuzugreifen. Ich würde es vorziehen, keine Win32-App zu starten, um diese Aufgabe auszuführen, es sei denn, es ist absolut notwendig! – Keano

+0

@Keano https://msdn.microsoft.com/en-us/library/system.datetime(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1 da ist diese Timedate-Struktur, die helfen könnte, dann wieder wird es nicht die Systemzeit einstellen. –

Verwandte Themen