AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

Ein Thema von colaflasche · begonnen am 10. Apr 2019 · letzter Beitrag vom 19. Jul 2019
Antwort Antwort
colaflasche

Registriert seit: 1. Jun 2007
33 Beiträge
 
#1

TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

  Alt 10. Apr 2019, 16:01
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:
Exception EOleException in Modul Test.exe bei 00000000002E0A4E.
Die Benachrichtigungsplattform ist nicht verfügbar.
Wie kann ich herausfinden, ob der Dienst läuft, bzw. ob das NotificationCenter aktiv ist? TNotificationCenter.Supported hilft da leider nicht.

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.
Gruß Jan
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

  Alt 10. Apr 2019, 16:12
Du willst also prüfen, ob der benötigte Service läuft?

Probiere doch mal: https://www.swissdelphicenter.ch/en/...de.php?id=1275
  Mit Zitat antworten Zitat
colaflasche

Registriert seit: 1. Jun 2007
33 Beiträge
 
#3

AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

  Alt 11. Apr 2019, 09:20
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?
Gruß Jan
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

  Alt 11. Apr 2019, 10:11
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.
  Mit Zitat antworten Zitat
omp

Registriert seit: 7. Apr 2012
60 Beiträge
 
#5

AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

  Alt 20. Jun 2019, 11:08
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
Harald
  Mit Zitat antworten Zitat
colaflasche

Registriert seit: 1. Jun 2007
33 Beiträge
 
#6

AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

  Alt 18. Jul 2019, 16:59
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.
Gruß Jan
  Mit Zitat antworten Zitat
colaflasche

Registriert seit: 1. Jun 2007
33 Beiträge
 
#7

AW: TNotificationCenter: Die Benachrichtigungsplattform ist nicht verfügbar

  Alt 19. Jul 2019, 09:24
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!
Gruß Jan
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz