AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Zugriff auf Sicherheitscenter von WinXP SP2
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Sicherheitscenter von WinXP SP2

Ein Thema von gsh · begonnen am 10. Jun 2005 · letzter Beitrag vom 5. Dez 2011
Antwort Antwort
Seite 2 von 4     12 34      
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#11

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 20. Jun 2005, 17:56
Aus eigener Erfahrung heraus:

Die Informationen über das WSC (Windows Security Center) sind als "NON-PUBLIC" markiert bei Microsoft. D.h. die Daten wie man das Ding ansteuert erhalten nur Personen die von Microsoft als Trusted eingestuft worden sind.

Ich hab auch schon vergeblich versucht das ding anzusteuern. Ich weiß aus zuverläßiger Quelle, das es sogar eine direkte API für das WSC gibt, aber es ist nichts veröffentlicht.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#12

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 20. Jun 2005, 18:04
Mist

Ich nehme auch Information aus inoffiziellen Quellen
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#13

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 21. Jun 2005, 06:46
hi,

Vielleicht hilft dir das vbs Script weiter...

Code:
'******************************************************************************
'AvSettings-wmi.vbs
'Author: Peter Costantini, The Microsoft Scripting Guys
'Date: 9/1/04
'Version: 1.0
'This script reads properties of an installed anti-virus product, using WMI.
'root\SecurityCenter:AntiVirusProduct is new on Windows XP Service Pack 2.
'******************************************************************************

strComputer = "." 'Can set to remote machine.
Set objAntiVirusProduct = GetObject _
 ("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & _
 "\root\SecurityCenter:AntiVirusProduct")
If Err = 0 Then
Err.Clear
  WScript.Echo "companyName: " & objAntiVirusProduct.companyName
  WScript.Echo "displayName: " & objAntiVirusProduct.displayName
  WScript.Echo "enableOnAccessUIMd5Hash: " & _
   objAntiVirusProduct.enableOnAccessUIMd5Hash
  WScript.Echo "enableOnAccessUIParameters: " & _
   objAntiVirusProduct.enableOnAccessUIParameters
  WScript.Echo "instanceGuid: " & objAntiVirusProduct.instanceGuid
  WScript.Echo "onAccessScanningEnabled: " & _
   objAntiVirusProduct.onAccessScanningEnabled
  WScript.Echo "pathToEnableOnAccessUI: " & _
   objAntiVirusProduct.pathToEnableOnAccessUI
  WScript.Echo "pathToUpdateUI: " & objAntiVirusProduct.pathToUpdateUI
  WScript.Echo "productUptoDate: " & objAntiVirusProduct.productUptoDate
  WScript.Echo "updateUIMd5Hash: " & objAntiVirusProduct.updateUIMd5Hash
  WScript.Echo "updateUIParameters: " & objAntiVirusProduct.updateUIParameters
  WScript.Echo "versionNumber: " & objAntiVirusProduct.versionNumber
Else
  WScript.Echo "Unable to connect to AntiVirusProduct class on " & _
   strComputer & "."
  WScript.Echo " Error Number:" & Err.Number
  WScript.Echo " Source:" & Err.Source
  WScript.Echo " Description:" & Err.Description
End If
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#14

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 21. Jun 2005, 20:30
es schaut nicht schlecht aus wenn ich es nur verstehen würde
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#15

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 22. Jun 2005, 01:54
Moin,

das script läuft bei mir nicht... aber das hier vbs-example

Habs hier mal rein kopiert:
Delphi-Quellcode:
'**********************************
'by "Peter Urbanetz" <peter@[EMAIL PROTECTED] > Oct 14, 2004 at 12:53 PM
'**********************************
On Error Resume Next
strComputer = "."
' compname
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\SecurityCenter")
Set colItems = objWMIService.ExecQuery("Select * from FirewallProduct",,48)
For Each objItem in colItems
    MsgBox objItem.getObjectText_
Next
Set colItems = objWMIService.ExecQuery("Select * from AntiVirusProduct",,48)
For Each objItem in colItems
    MsgBox objItem.getObjectText_
Next
'**********************************
'I hope it is helpfull
'Peter
'
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 22. Jun 2005, 02:12
ich hab mal ne delphi funktion darfür

Delphi-Quellcode:
procedure GetFirewallandAntiVirusSoftware(SLAntiVirus, SLFirewall: TStringList);
var
  f: TextFile;
  VBSFile, InfoFile: String;
  SL: TStringList;
  i: Integer;
begin
  SL := TStringList.Create;
  VBSFile := Copy(ParamStr(0), 1, Length(ParamStr(0)) -4) + '.vbs';
  InfoFile := Copy(ParamStr(0), 1, Length(ParamStr(0)) -4) + '.erz';
  AssignFile(f, VBSFile);
  ReWrite(f);
  // Stuff is needed ..
  WriteLn(f, 'Set objSecurityCenter = GetObject("winmgmts:\\.\root\SecurityCenter")');
  WriteLn(f, 'Set colFirewall = objSecurityCenter.ExecQuery("Select * From FirewallProduct",,48)');
  WriteLn(f, 'Set colAntiVirus = objSecurityCenter.ExecQuery("Select * From AntiVirusProduct",,48)');
  WriteLn(f, 'Set objFileSystem = CreateObject("Scripting.fileSystemObject")');
  WriteLn(f, 'Set objFile = objFileSystem.CreateTextFile("' + InfoFile + '", True)');
  WriteLn(f, 'Enter = Chr(13) + Chr(10)');
  WriteLn(f, 'CountFW = 0');
  WriteLn(f, 'CountAV = 0');
  // Firewall(s)
  WriteLn(f, 'For Each objFirewall In colFirewall');
  WriteLn(f, 'CountFW = CountFW + 1');
  WriteLn(f, 'Info = Info & "F" & CountFw & ") " & objFirewall.displayName & " v" & objFirewall.versionNumber & Enter');
  WriteLn(f, 'Next');
  // AntiVirus
  WriteLn(f, 'For Each objAntiVirus In colAntiVirus');
  WriteLn(f, 'CountAV = CountAV + 1');
  WriteLn(f, 'Info = Info & "A" & CountAV & ") " & objAntiVirus.displayName & " v" & objAntiVirus.versionNumber & Enter');
  WriteLn(f, 'Next');
  // Write to File
  WriteLn(f, 'objFile.WriteLine(Info)');
  WriteLn(f, 'objFile.Close');
  CloseFile(f);
  ShellExecute(0, 'open', PChar(VBSFile), nil, nil, SW_HIDE);
  // 2 sec warten, is genug
  Sleep(2000);
  SL.LoadFromFile(InfoFile);
  for i := 0 to SL.Count -1 do
  begin
    if Copy(SL[i], 1, 1) = 'Fthen
      SLFirewall.Add(Copy(SL[i], 2, Length(SL[i])))
    else if Copy(SL[i], 1, 1) = 'Athen
      SLAntiVirus.Add(Copy(SL[i], 2, Length(SL[i])))
  end;
  DeleteFile(VBSFile);
  DeleteFile(InfoFile);
end;

// aufrufen
procedure TfrmMain.Button1Click(Sender: TObject);
var
  SLAntiVirus, SLFirewall: TStringList;
  i: Integer;
begin
  lbAntiVirus.Clear; // ListBox
  lbFirewall.Clear;
  SLAntiVirus := TStringList.Create;
  SLFirewall := TStringList.Create;
  GetFirewallandAntiVirusSoftware(SLAntiVirus, SLFirewall);
  for i := 0 to SLAntiVirus.Count -1 do
    lbAntiVirus.Items.Add(SLAntiVirus[i]);
  for i := 0 to SLFirewall.Count -1 do
    lbFirewall.Items.Add(SLFirewall[i]);
end;
und der VBS script wäre dann
Delphi-Quellcode:
Set objSecurityCenter = GetObject("winmgmts:\\.\root\SecurityCenter")
Set colFirewall = objSecurityCenter.ExecQuery("Select * From FirewallProduct",,48)
Set colAntiVirus = objSecurityCenter.ExecQuery("Select * From AntiVirusProduct",,48)
Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set objFile = objFileSystem.CreateTextFile("C:\Filename.erz", True)
Enter = Chr(13) + Chr(10)
CountFW = 0
CountAV = 0
For Each objFirewall In colFirewall
  CountFW = CountFW + 1
  Info = Info & "F" & CountFw & ") " & objFirewall.displayName & " v" & objFirewall.versionNumber & Enter
Next
For Each objAntiVirus In colAntiVirus
  CountAV = CountAV + 1
  Info = Info & "A" & CountAV & ") " & objAntiVirus.displayName & " v" & objAntiVirus.versionNumber & Enter
Next
objFile.WriteLine(Info)
objFile.Close
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#17

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 22. Jun 2005, 17:22
klingt alles super und funktioniert auch alles einwandfrei aber gibt es nicht eine gänzlich aus Delphi-Code bestehende Lösung, weil des mit die 2 sec. warten ist total schlecht. z.b. am Afnag wo isch probiert habe bin ich fast verzeifelt weil er dann nie die Entdatei gefunden hat. Was war der Grund? NORTAN den er hat mir die ganze Zeit den Script gesperrt.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#18

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 23. Jun 2005, 03:03
Moin moin,

reicht dir evtl. das?
Delphi-Quellcode:
{..}

uses {..,} ComObj, ActiveX;

{..}

procedure TForm1.Button1Click(Sender: TObject);
var
  SWbem,
  SWbemCon,
  SWbemQuery,
  objVar : OleVariant;
  szWQL : String;
  pFetched : LongInt;
  unknown : IUnknown;
  enumUnk : IEnumUnknown;
  Counter : Integer;
  
            procedure Display(szValue: String = ''; szData : String = '');
            begin
               Form1.Canvas.TextOut(20 , Counter, szValue);
               Form1.Canvas.TextOut(200, Counter, szData );
               inc(Counter, 17);
            end;

begin
   Canvas.FillRect(Rect(0,0,form1.Width,form1.Height));
   Counter := 20;
   CoInitialize(nil);
   try
      SWbem := CreateOleObject('WbemScripting.SWbemLocator');
      // strServer, strNamespace, strUser, strPassword, strLocale, strAuthority,
      // iSecurityFlags, objwbemNamedValueSet
      SWbemCon := SWbem.ConnectServer('', 'root\SecurityCenter', '', '', '');

      szWQL := 'Select * from AntiVirusProduct';
      SWbemQuery := SWbemCon.ExecQuery(szWQL,'WQL', 48);
      unknown := SWbemQuery._NewEnum;
      unknown.QueryInterface(IEnumVariant, enumUnk);

      VarClear(objVar);
      OleCheck(enumUnk.Next( 1, objVar, @pFetched ));
      if (pFetched <> 0) then begin
         Display('companyName:'               , VarToStr(objVar.companyName));
         Display('displayName:'               , VarToStr(objVar.displayName));
         Display('enableOnAccessUIMd5Hash:'   , VarToStr(objVar.enableOnAccessUIMd5Hash));
         Display('enableOnAccessUIParameters:', VarToStr(objVar.enableOnAccessUIParameters));
         Display('instanceGuid:'              , VarToStr(objVar.instanceGuid));
         Display('onAccessScanningEnabled:'   , VarToStr(objVar.onAccessScanningEnabled));
         Display('pathToEnableOnAccessUI:'    , VarToStr(objVar.pathToEnableOnAccessUI));
         Display('pathToUpdateUI:'            , VarToStr(objVar.pathToUpdateUI));
         Display('productUptoDate:'           , VarToStr(objVar.productUptoDate));
         Display('updateUIMd5Hash:'           , VarToStr(objVar.updateUIMd5Hash));
         Display('updateUIParameters:'        , VarToStr(objVar.updateUIParameters));
         Display('versionNumber:'             , VarToStr(objVar.versionNumber));
      end else
         Display('No supported AV products found...');
      Display('---------------------------------------------');

      szWQL := 'Select * from FirewallProduct';
      SWbemQuery := SWbemCon.ExecQuery(szWQL,'WQL', 48);
      unknown := SWbemQuery._NewEnum;
      unknown.QueryInterface(IEnumVariant, enumUnk);

      VarClear(objVar);
      OleCheck(enumUnk.Next( 1, objVar, @pFetched ));
      if (pFetched <> 0) then begin
         Display('Company Name:'      , VarToStr(objVar.companyName));
         Display('Display Name:'      , VarToStr(objVar.displayName));
         Display('Enabled:'           , VarToStr(objVar.enabled));
         Display('enableUIParameters:', VarToStr(objVar.enableUIParameters));
         Display('pathToEnableUI:'    , VarToStr(objVar.pathToEnableUI));
         Display('versionNumber:'     , VarToStr(objVar.versionNumber));
      end else
         Display('No supported FW products found...');
   finally
      CoUnInitialize;
   end;
end;

{..}
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#19

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 24. Jun 2005, 12:40
@x000x: funktioniert super, danke

Jetzt noch ein paar Fragen: Also des Sicherheitsfenster hat unten so die drei Sachen: Internet-Optionen, Automatisches Update, Windows Firewall.
Internet-Optionen ist kein Problem aber wie kann ich den Dialog Automatisches Update und Windows Firewall aufrufen?
Außerdem war stellt sich auch die Frage wie ich den Status des Automatisches Update und der Windows Firewall bekomme.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von masc-online
masc-online

Registriert seit: 10. Dez 2005
Ort: Leinfelden-Echterdingen
22 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Zugriff auf Sicherheitscenter von WinXP SP2

  Alt 10. Dez 2005, 15:47
Hallo,

ich finde diesen Code-Schnipsel für die Delphi-only-Lösung sehr hilfreich. Nur leider bekomme ich ihn nur unter Delphi 7 personal und nicht unter Delphi 3 professional zum Laufen.

An der folgenden Zeile stört sich der Compiler:

unknown := SWbemQuery._NewEnum; Ich erhalte an der Stelle mit Delphi 3 immer den Fehler: Inkompatible Typen 'Variant' und 'IUnknown'.

Versuche ich mich an einer Typumwandlung

unknown := Variant(SWbemQuery._NewEnum) as IUnknown; bekomme ich die Fehlermeldung: Operator ist auf diesen Operandentyp nicht anwendbar.

Gibt's für Delphi 3 an der Stelle noch eine Chance? Kann mir bitte jemand helfen?

Grüße aus Stuttgart,
Marian
Marian
«Sei nie zufrieden, aber immer glücklich, mit dem was du tust!»
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 10:50 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