Einzelnen Beitrag anzeigen

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, 18: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