AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kommunikation Service und Anwendung unter Vista

Kommunikation Service und Anwendung unter Vista

Ein Thema von JonnyGuitar · begonnen am 18. Jun 2007 · letzter Beitrag vom 21. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2   
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#1

Kommunikation Service und Anwendung unter Vista

  Alt 18. Jun 2007, 14:13
moin moin,

ich habe im delphi-forum folgende unit gefunden: TMutexIPC

damit versuche ich nun zwischen service und anwendung zu kommunizieren. unter xp funktioniert das einwandfrei.
unter vista hingegen wird aber anscheinend nicht auf den selben mutex zugegriffen, auch bei ausgeschaltetem uac.

ist diese nun unter vista unmöglich oder habe ich nur vergessen was zu beachten?


mfg Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.187 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Kommunikation Service und Anwendung unter Vista

  Alt 18. Jun 2007, 14:18
Evtl. ist ja die striktere Trennung Dienste-"Desktop" <-> Anwender-Desktop dafür verantwortlich?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#3

Re: Kommunikation Service und Anwendung unter Vista

  Alt 18. Jun 2007, 14:21
heisst das dann explizit das zur kommunikation keine memory mapped files in frage kommen?
als alternative fallen mir dann nur noch named pipes ein, wobei ich eigentlich mmf bevorzugen würde
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.187 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Kommunikation Service und Anwendung unter Vista

  Alt 18. Jun 2007, 14:24
Es war nur eine Vermutung von mir. Um die Interaktion Dienst <-> Deskop wieder auf XP-Level zu bringen gibt es eine Registry-Key. Wie der heißt mußt du die Suche bemühen ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: Kommunikation Service und Anwendung unter Vista

  Alt 18. Jun 2007, 19:20
Memory Mapped Files gehen schon, man muss nur die DACL anpassen, damit ein anderer Benutzer auch darauf Zugriff hat.
Ist fast wie mit normalen Dateien.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#6

Re: Kommunikation Service und Anwendung unter Vista

  Alt 19. Jun 2007, 09:10
das ist schonmal sehr schön zu hören, dass es doch mit mmf funktioniert.

@Dezipaitor oder jeden anderen wissenden: könntest du mir wenns nicht zu viele umstände macht kurz erklären, wie es sich mit dacl verhält?
meinst du vielleicht beim CreateFileMapping die pSecurityAttributes? die habe ich schon mit
Delphi-Quellcode:
aSA.nLength := SizeOf(TSecurityAttributes);
aSA.bInheritHandle := true;
aSa.lpSecurityDescriptor := @aSd;

InitializeSecurityDescriptor(aSa.lpSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(aSa.lpSecurityDescriptor, True, nil, False);
aufs maximalste gesetzt.


vielen dank für eure hilfe

mfg Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

Re: Kommunikation Service und Anwendung unter Vista

  Alt 19. Jun 2007, 10:20
Da du eine NULL-DACL verwendest, hat wirklich jeder Zugriff darauf. Das stimmt also.

ICh glaube eher, dass du mal mit DuplicateHandle, versuchen solltest, das Mutex Handle über Prozessebene hinweg zu kopieren.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#8

Re: Kommunikation Service und Anwendung unter Vista

  Alt 19. Jun 2007, 11:09
servus,

ich habe jetzt in der unit mutexipc nach
Delphi-Quellcode:
If FMMFHandle = INVALID_HANDLE_VALUE Then
Begin
  FMMFHandle := CreateFileMapping($FFFFFFFF, @aSa, PAGE_READWRITE, 0, MutexSize, PChar('MIPC_' + MutexName + '_MMF'));
  If FMMFHandle = 0 Then
    Raise EMIPCInitialization.Create('Error creating file mapping object.');
  Precreated := GetLastError = ERROR_ALREADY_EXISTS;
End
Else
 Precreated := True;
folgendes eingefügt:
Delphi-Quellcode:
if not DuplicateHandle(GetCurrentProcess, FMMFHandle,GetCurrentProcess, @FMMFHandle, 0, FALSE, DUPLICATE_SAME_ACCESS) then
  RaiseLastWin32Error;
und nach
Delphi-Quellcode:
If (FMutexHandle = INVALID_HANDLE_VALUE) Or (FClientID = MIPC_USER_UNDEFINED) Or (FClientID = MIPC_USER_BROADCAST) Then
Begin
  CloseIPC;
  SetLastError(ERROR_ALREADY_EXISTS);
  If (FClientID = MIPC_USER_UNDEFINED) Or (FClientID = MIPC_USER_BROADCAST) Then
    FClientID := GenClientID;
  While GetLastError = ERROR_ALREADY_EXISTS Do
  Begin
    FMutexHandle := CreateMutex(Nil, True, PChar(Format('MIPC_%s_CLIENT%.8x', [MutexName, ClientID])));
    If GetLastError = ERROR_ALREADY_EXISTS Then
    Begin
      CloseHandle(FMutexHandle);
      FClientID := GenClientID;
    End;
  End;
folgendes
Delphi-Quellcode:
if not DuplicateHandle(GetCurrentProcess, FMutexHandle,GetCurrentProcess, @FMutexHandle, 0, FALSE, DUPLICATE_SAME_ACCESS) then
  RaiseLastWin32Error;
leider immer noch keine besserung, der service und die anwendung scheinen unterschiedliche speicherbereiche zu nutzen.

oder habe ich was bei duplicatehandle falsch gemacht?


mfg Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#9

Re: Kommunikation Service und Anwendung unter Vista

  Alt 19. Jun 2007, 11:19
Das zweite GetCurrentProcess musst du durch den ZielProzess ersetzen. Sie dürfen nicht derselbe Prozess sein.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#10

Re: Kommunikation Service und Anwendung unter Vista

  Alt 19. Jun 2007, 12:14
klingt logisch

sorry das ich nerve, aber ich habe keinen plan wie ich an die processid von der anwendung komme.
hast du vielleicht einen kleinen denkanstoss für mich

ps: wie muss ich das denn halten, wenn der service schon gestartet ist, aber die anwendung noch nicht?

mfg Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 15: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