![]() |
TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar
Guten Tag,
ich verwende ein TNotificationCenter um Notifications auszulösen. Das klappt auch alles wunderbar, bis der Dienst Windows-Pushbenachrichtigungs-Benutzerdienst_<Benutzer> gestoppt wird, dann erhalte ich folgende Meldung: Zitat:
Mein Problem ist, dass das ganze auf einem Terminalserver (Windows Server 2016) läuft und da gibt es mehrere Benutzer und die dürfen scheinbar diesen Dienst nicht starten. Details habe ich nicht, der Kunde kontrolliert den Server. Ich kenne mich auch nicht mit den Berechtigungen aus, was da wo eingestellt werden muss, dass der Dienst gestartet werden kann/darf/soll. Wenn hierzu jemand eine Idee hätte wäre das auch okay für mich. Aber wichtiger wäre mir zu wissen, wie ich herausfinden kann, ob ich Notifications überhaupt darstellen kann. |
AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar
Du willst also prüfen, ob der benötigte Service läuft?
Probiere doch mal: ![]() |
AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar
Danke, aber ich weiß ja nicht, wie der Dienst heißt. Für jeden Benutzer gibt es einen eigenen Dienst.
Der Dienstname lautet: WpnUserService_<Hex-Wert, der den Benutzer repräsentiert> Anzeigename: Windows-Pushbenachrichtigungs-Benutzerdienst_<Hex-Wert, der den Benutzer repräsentiert> Und auf einem Terminalserver mit 10 Benutzern habe ich den Dienst 10 mal. Welcher ist also für meinen aktuellen Benutzer? |
AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar
Deine App läuft ja im jeweiligen Benutzerkontext (nehme ich an).
Du musst also nur schauen, ob ein Dienst läuft, der mit "WpnUserService" anfängt:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} {$R *.res} // nach einer Idee von: http://www.chami.com/tips/delphi/040698D.html uses System.SysUtils, Winapi.Windows, Winapi.WinSvc; function IsServiceRunning(const AServiceName: string): Boolean; const // assume that the total number of services is less than 4096. increase if necessary cnMaxServices = 4096; type TSvcA = array [0 .. cnMaxServices] of TEnumServiceStatus; PSvcA = ^TSvcA; var I: integer; // service control manager handle schm: SC_Handle; // bytes needed for the next buffer, if any nBytesNeeded, // number of services nServices, // pointer to the next unread service entry nResumeHandle: DWORD; // service status array ssa: PSvcA; dwServiceType: DWORD; dwServiceState: DWORD; begin Result := False; // connect to the service control manager schm := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE); if (schm > 0) then begin nResumeHandle := 0; New(ssa); try dwServiceType := SERVICE_WIN32_SHARE_PROCESS; dwServiceState := SERVICE_ACTIVE; EnumServicesStatus( schm, dwServiceType, dwServiceState, ssa^[0], SizeOf(ssa^), nBytesNeeded, nServices, nResumeHandle); // assume that our initial array was large enough to hold all // entries. add code to enumerate if necessary. for I := 0 to nServices - 1 do begin Result := string(ssa^[I].lpServiceName).StartsWith(AServiceName); if Result then Break; end; finally Dispose(ssa); // close service control manager handle CloseServiceHandle(schm); end; end; end; begin try Writeln('Is a WpnUserService running? ', IsServiceRunning('WpnUserService').ToString(TUseBoolStrs.True)); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; Readln; end. |
AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar
Ich habe gerade auch das Problem. Ein Kunde erhält die Fehlermeldung auf einem Terminalserver mit Windows 2012 R2. Nur bei Remoteverbindung, kein Fehler bei Anmeldung direkt am Server. Ich habe selbst einen 2012 R2 getestet, da aber keine Probleme.
Die Dienst-Suche von TiGü habe ich auf meinem Testserver (auf dem es ja kein Problem gibt) ausgeführt und der Dienst wird nicht gefunden. Es muss also eine andere Ursache geben. colaflasche, bist Du da weitergekommen? Gruß und Danke, Harald |
AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar
Leider nicht, ich habe jetzt eine ganz billige Lösung, ich kreiere mir das Notification-Center dynamisch. Wenn das fehlschlägt, schlucke ich die Exception und gebe ich auch keine Notifications aus.
Was besseres ist mir nicht eingefallen. |
AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar
oh oh, aus den Releasenotes von 10.3.2:
Problems if "Windows Push Notifications User Service XXX" services is not running Ich werde das mal prüfen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz