AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) IPC per WM funktioniert nicht wenn (nur) EMpfänger mit Admin Rechten läuft
Thema durchsuchen
Ansicht
Themen-Optionen

IPC per WM funktioniert nicht wenn (nur) EMpfänger mit Admin Rechten läuft

Ein Thema von Viktorii · begonnen am 29. Mai 2013 · letzter Beitrag vom 29. Mai 2013
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

IPC per WM funktioniert nicht wenn (nur) EMpfänger mit Admin Rechten läuft

  Alt 29. Mai 2013, 09:30
Moin.

Zwei Applikationen kommunizieren via WM miteinander. Folgendermaßen implementiert:

Sender:
Delphi-Quellcode:
procedure TSendForm.FormCreate(Sender: TObject);
begin
  WM_CMD_MY_WM := RegisterWindowMessage ('MyWm');
end;

...
...
PostMessage(HWND_BROADCAST, WM_CMD_MY_WM, 90, 0);
...
...
Empfänger:
Delphi-Quellcode:
procedure TRecForm.FormCreate(Sender: TObject);
begin
  WM_CMD_MY_WM := RegisterWindowMessage ('MyWm');
end;

procedure TRecForm.WndProc(var msg : TMessage);
begin
  if msg.Msg = WM_CMD_MY_WM then
  begin
    ShowMessage('Bingo ' + IntToStr(msg.WParam) + ' ' + IntToStr(msg.LParam));
  end
  else
  begin
    inherited WndProc(msg);
  end;
end;
Funktioniert soweit wunderbar. Nun soll aber die Empfänger Applikation mit Admin Rechten laufen.

Wenn ich diese nun durch Manifest oder mit 'Als Administrator ausführen' mit Admin Rechten starte, funktioniert es nicht mehr.

Wieso ist das so und was kann ich machen damit das trotzdem funktioniert?

Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IPC per WM funktioniert nicht wenn (nur) EMpfänger mit Admin Rechten läuft

  Alt 29. Mai 2013, 09:39
Bin beim googeln darauf gestoßen, vielleicht hilft dir das:

Zitat:
In Windows Vista und höher, User Interface Privilege Isolation (UIPI) verhindert, dass ein niedriger Integrität Prozess vom Senden Fenster Nachrichten an eine höhere Integrität Prozess. In früheren Windows-Versionen konnte Schadcode administrativen Prozesse durch den Missbrauch von Fenster-Nachrichten anzugreifen. Standardmäßig blockiert UIPI alle Nachrichten mit einem Wert oberhalb WM_USER , die Nachrichten via registriert umfasst RegisterWindowMessage() . Also, um damit von A bis B wie Nachrichten senden, muss B zuerst nennen ChangeWindowMessageFilter() oder ChangeWindowMessageFilterEx() für jede Nachricht blockiert, dass sie in den Genuss niedrigerer Integrität Prozesse erhalten will.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: IPC per WM funktioniert nicht wenn (nur) EMpfänger mit Admin Rechten läuft

  Alt 29. Mai 2013, 10:01
Also ich dachte doch, Prozesse verschiedener Benutzer-Sessions können (wohl zumindest ab Vista) nicht per Messages untereinander kommunizieren? Die andere müsste dementsprechend auch vom Administrator-Benutzer gestartet werden...
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#4

AW: IPC per WM funktioniert nicht wenn (nur) EMpfänger mit Admin Rechten läuft

  Alt 29. Mai 2013, 10:54
Mit ChangeWindowMessageFilterEx() scheint es zu funktionieren. Vielen Dank.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:07 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