AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Windows Firewall - Eintrag erstellen / löschen / ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Firewall - Eintrag erstellen / löschen / ändern

Ein Thema von fkerber · begonnen am 2. Mär 2009 · letzter Beitrag vom 5. Mär 2009
Antwort Antwort
Seite 3 von 4     123 4      
Dezipaitor

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

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 3. Mär 2009, 20:57
So isses besser, imho.

Delphi-Quellcode:
function IsWindowsFirewallServiceActive: Boolean;
var
  SCM, hService: LongWord;
  sStatus: TServiceStatus;
  dwStat: Cardinal;
begin
  SCM := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE);
  if SCM <> 0 then
  begin
    hService := OpenService(SCM, PChar('SharedAccess'), SERVICE_QUERY_STATUS);
    if hService = 0 then //Vista,Win7
      hService := OpenService(SCM, PChar('MpsSvc'), SERVICE_QUERY_STATUS);

    try
      if (hService <> 0) then
      begin
        if (QueryServiceStatus(hService, sStatus)) then
        begin
          result := sStatus.dwCurrentState = SERVICE_RUNNING;
          exit;
        end;
      end;
    finally
      CloseServiceHandle(SCM);
      CloseServiceHandle(hService);
    end;
  end;

  raise EAccessViolation.Create('Could not determine Firewall Service status');
end;
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 fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#22

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 3. Mär 2009, 20:58
Hi!

Vielen Dank für deine Mühe.
Und genau für sowas ist eben diese Sparte da!


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#23

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 18:37
Hi!

Also meine Tests zeigen mit deinem Code folgendes:

Vista Ultimate, 64 Bit: Test liefert false, egal ob Firewall-Service läuft oder nicht
Win XP - Home, 32 Bit: Test liefert richtige Ergebnisse


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Dezipaitor

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

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 18:48
D.h. sStatus.dwCurrentState muss einen anderen Wert haben, als der angezeigte. Gib ihn einfach mal aus.
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 fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#25

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 18:59
Hi!

Also was mir aufgefallen ist:
hService ist nicht 0 wie ich es vermutet hätte, wenn ich deinen Kommentar hindert dem if lese.
Wenn ich mir sStatus.dwCurrentState ausgeben lasse ist es 1, wenn der Service läuft und ebenfalls 1, wenn er nicht läuft...

Wenn ich den Code so verändere, dass er immer hService := OpenService(SCM, PChar('MpsSvc'), SERVICE_QUERY_STATUS); ausführt, funktioniert der Test einwandfrei (Rückgabewert 4=SERVICE_RUNNING, wenn er läuft).
Es liegt also nicht an sStatus.dwCurrentState, sondern es liegt daran, dass hService nicht 0 ist, obwohl es Vista ist... (hService hat immer wechselnde Werte).


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Dezipaitor

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

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 19:12
Tut mir leid, das ist ein Denkfehler gewesen.
Der SharedAccess-Dienst ist unter XP "Windows-Firewall/Gemeinsame Nutzung der Internetverbindung", während
in Vista es nur noch "Gemeinsame Nutzung der Internetverbindung" ist. Die WF ist ein eigener "Dienst".

Wir testen daher zuerst auf den Vista-Fall, da der in XP fehlschlägt (wenn kein anderer Dienst so heißt - muss ggf. noch mehr überprüft werden).
Delphi-Quellcode:
function IsWindowsFirewallServiceActive: Boolean;
var
  SCM, hService: LongWord;
  sStatus: TServiceStatus;
  dwStat: Cardinal;
begin
  SCM := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE);
  if SCM <> 0 then
  begin
    //Vista,Win7
    hService := OpenService(SCM, PChar('MpsSvc'), SERVICE_QUERY_STATUS);

    if (hService = 0) and IsWindowsXP then
      hService := OpenService(SCM, PChar('SharedAccess'), SERVICE_QUERY_STATUS);
    try
      if (hService <> 0) then
      begin
        if (QueryServiceStatus(hService, sStatus)) then
        begin
          result := sStatus.dwCurrentState = SERVICE_RUNNING;
          exit;
        end;
      end;
    finally
      CloseServiceHandle(SCM);
      CloseServiceHandle(hService);
    end;
  end;

  raise EAccessViolation.Create('Could not determine Firewall Service status');
end;
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 fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#27

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 19:22
Hi!

Wenn ich versuche den Code zu testen, sagt er:

Zitat:
[DCC Fehler] Unit1.pas(39): E2003 Undefinierter Bezeichner: 'IsWindowsXP'

Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Dezipaitor

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

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 19:38
IsWindowsXP kannst du mit jeder beliebigen Funktion ersetzen, die auf XP (ggf. noch >= SP2) prüft, da die IsWindowsFirewallServiceActive sonst unter Win2000 TRUE zurückliefert.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Dezipaitor

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

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 19:42
IsWindowsXP kannst du mit jeder beliebigen Funktion ersetzen, die auf XP (ggf. noch >= SP2) prüft, da die IsWindowsFirewallServiceActive sonst unter Win2000 (bzw. XP SP0/1) TRUE zurückliefert.


(Kann sein, dass DP gerade einen Schluckauf hat? Posts editieren oder adden dauert extrem lange oder funktionieren garnicht. )
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 sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#30

Re: Windows Firewall - Eintrag erstellen / löschen / ändern

  Alt 4. Mär 2009, 19:50
Zitat von Dezipaitor:
Der ganze Code ist fehlerhaft und funktioniert auch unter XP nur dann, wenn man Adminrechte hat.
Ja das hoffe ich doch. Und selbst da finde ich es unbefriedigend.

Verstehe ich das nur grad falsch? Warum kann ein Programm sich eigenhändig in die ExceptionList meiner Firewall eintragen? Ich hoffe mal dass das nicht geht.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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