AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Createmutex / Windows 7 / 64bit Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Createmutex / Windows 7 / 64bit Problem

Ein Thema von Mavarik · begonnen am 10. Nov 2009 · letzter Beitrag vom 11. Nov 2009
Antwort Antwort
Seite 2 von 2     12   
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Createmutex / Windows 7 / 64bit Problem

  Alt 10. Nov 2009, 14:51
Ich frage mich ein wenig, wozu man da ein Mutex bemüht. Viel sauberer wäre es imho den Service Manager einfach zu fragen ob der Service läuft. Das ist nicht nur einfacher, sondern auch sicherer (es gibt nämlich einen Zeitraum in der der Mutex noch nicht existiert, Dein Service aber im Begriff ist zu starten):

Delphi-Quellcode:
uses winsvc;

function IsServiceRunning(serviceName : string) : Boolean;
var
  scmHandle : THandle;
  serviceHandle : THandle;
  serviceStatus : TServiceStatus;
begin
  Result := FALSE;
  scmHandle := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, GENERIC_READ);
  if scmHandle <> 0 then
    begin
      serviceHandle := OpenService(scmHandle, PChar(serviceName), SERVICE_QUERY_STATUS);
      if serviceHandle <> 0 then
        begin
          if QueryServiceStatus(serviceHandle, serviceStatus) then
            result := serviceStatus.dwCurrentState <> SERVICE_STOPPED;
          CloseServiceHandle(serviceHandle);
        end;
      CloseServiceHandle(scmHandle);
    end;
end;
Wenn Du wirklich ein Mutex nutzen magst, dann sollte es meiner Ansicht nach notwendig sein, den Mutex im globalen Namespace zu erstellen. Dazu musst Du Dir dann vorher entsprechende Rechte besorgen.
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Createmutex / Windows 7 / 64bit Problem

  Alt 10. Nov 2009, 15:05
Zitat von Fridolin Walther:
Wenn Du wirklich ein Mutex nutzen magst, dann sollte es meiner Ansicht nach notwendig sein, den Mutex im globalen Namespace zu erstellen. Dazu musst Du Dir dann vorher entsprechende Rechte besorgen.
Danke für den Codesnipe ISServiceRunning... (Funktioniert)

Leider verschieb das "nur" das Problem, weil unter Win7 das gleiche Problem mit den Events habe...

Auch die Events haben unter Vista mit eingeschalteter UAC ohne den globalen Namespace funktioniert...

Mavarik
  Mit Zitat antworten Zitat
Dezipaitor

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

Re: Createmutex / Windows 7 / 64bit Problem

  Alt 10. Nov 2009, 15:19
Naja, man wartet ja eigentlich nicht auf den Dienst selbst, sondern auf irgendein Feature, welches er bereitstellt, z.B. Pipe.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#14

Re: Createmutex / Windows 7 / 64bit Problem

  Alt 10. Nov 2009, 15:31
Zitat von Dezipaitor:
Naja, man wartet ja eigentlich nicht auf den Dienst selbst, sondern auf irgendein Feature, welches er bereitstellt, z.B. Pipe.
Ja klar... Der Dienst stellt über ein CreateFileMapping... Ein Memory Block zur Verfügung...
Das ganze mit verschiedenen Threads die alle über Events-Handels synconisiert werden...
Aber das funktioniert nicht mehr und Win 7...

Wenn ich die gleichen Exe unter Vista laufen lassen - alles einwandfrei...

Habe mir auch gerade die Updates der API usw. geladen... Gleiches Problem...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Createmutex / Windows 7 / 64bit Problem

  Alt 11. Nov 2009, 16:20
Hallo Christian!

Hast Du mal ein Stück source für "CreateGlobalPrivilege"...

Leider kann ich dazu nix finden..

Grüsse
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#16

Re: Createmutex / Windows 7 / 64bit Problem

  Alt 11. Nov 2009, 17:35
OK So funktioniert es...

Delphi-Quellcode:
var
   SecurityDesc: TSecurityDescriptor;
   SecurityAttr: TSecurityAttributes;
begin
  InitializeSecurityDescriptor(@SecurityDesc, SECURITY_DESCRIPTOR_REVISION);

  SetSecurityDescriptorDacl(@SecurityDesc, True, nil, False);
  SecurityAttr.nLength := SizeOf(SecurityAttr);
  SecurityAttr.lpSecurityDescriptor := @SecurityDesc;
  SecurityAttr.bInheritHandle := False;


  Geladen := CreateMutex(@SecurityAttr, false,pchar('Global\'+ServiceDa));
  error := GetLastError;

  if error = ERROR_ALREADY_EXISTS
Ich gehe davon aus, dass ich alle Mutex und Events mit dem Parameter aufrufen muss...
Werde ich mal testen...

Grüsse Mavarik
  Mit Zitat antworten Zitat
Dezipaitor

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

Re: Createmutex / Windows 7 / 64bit Problem

  Alt 11. Nov 2009, 19:22
Das Privileg heißt SE_CREATE_GLOBAL_NAME und wird mit AdjustTokenPrivilege oder JwEnablePrivilege von JWSCL aktiviert.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 09:00 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