![]() |
Benutzerrechte
Hallo alle,
ich möchte von einer Datei die Benútzerrechte erfahren und habe dazu auch ein kleines Beispiel aus dem Entwickler Ausgabe 6/2003 seite 77 probiert. Leider bringe ich das nicht zum laufen, folgende fehlermeldungen bekomme ich: [Fehler] Unit1.pas(30): Undefinierter Bezeichner: 'ISWbemServices' [Fehler] Unit1.pas(39): Undefinierter Bezeichner: 'SWbemLocator1' wer kann mir einen tipp geben damit mein Programm diese variablen kennt ? Ich verwende D5, WIN2000. danke für eure Hilfe fredi. Beispielcode:
Delphi-Quellcode:
[edit=Luckie]Delphi-Tags eingefügt. Beim nächsten mal bitte selber machen. Danke Mfg, Luckie[/edit]
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ShlObj, ActiveX, shellapi; procedure TForm1.SpeedButton1Click(Sender: TObject); var aSrv :ISWbemServices; vObj :OleVariant; iRet :Integer; vObjDesc :OleVariant; vDACL :Variant; vDACLEnum :OleVariant; vNVS :OleVariant; iHigh, iLow, I:Integer; begin aSrv:=SWbemLocator1.ConnetServer('','','','','','',0,vNVS); vObj:=aSrv.Get('Win32_LogicalFileSecuritySetting="C:\trace.txt"',0,vNVS); iRet:=vObj.GetSecurityDescription(vObjDesc); If iRet <> 0 then begin showMessage(IntToStr(iRet)); EXIT; end; vDACL:=vObjDesc.DACL; iHigh:=VarArrayHighBound(vDACL, 1); iLow :=VarArrayLowBound(vDACL,1); for i:=iLow to iHigh do begin ListBox1.Items.Add(vDACL[i].Trustee.Name); ListBox1.Items.Add(vDACL[i].AccessMask); end; end; |
Re: Benutzerrechte
Hallo fredi,
ich glaube da muss erst die Wbem-Typbibliothek in die Uses-Klausel eingebunden werden. Gruß Andy |
Re: Benutzerrechte
danke für deine rasche antwort,
in meiner Typbibliothek gibt es leider keine 'Wbem' ! hat die event. einen anderen namen, was muß ich importieren ? fredi |
Re: Benutzerrechte
Du musst zuerst die WbemScripting-Typlibrary importieren... Delphi erzeugt dann eine Datei mit demselben Namen, nur mit angehängtem "_TLB.pas" und die brauchst du dann in deiner uses-Liste!
Alternativ zu WMI kannst du das ganze aber auch über die klassischen APIs machen - ist aber nicht unbedingt einfacher (SecurityDescritoren, SACLs, DACLs, ACEs, ...)! |
Re: Benutzerrechte
Hi Motzi,
danke für deine hilfe. habe jetzt die typ bibliothek in mein projekt importiert. Jetzt kennt er aber SWbemLocator1 wieder nicht ! Was mich ein wenig stutzig macht ist, daß in der unit WbemScripting_TLB kein classe mit SWbemLocator1 steht. Im Beispielcode wird aber SWbemLocator1 geschrieben. Ist da ein fehler oder muß die SWbemLocator1 erst erzeugt werden ? Wenn diese jedoch erst erzeugt werden muß, wie ? [Fehler] Unit1.pas(40): Undefinierter Bezeichner: 'SWbemLocator1' kannst du mir da noch einen tipp geben. danke im voraus fredi. |
Re: Benutzerrechte
Ich nehme mal stark an, das SWbemLocator1 ein TSWbemLocator-Objekt auf deiner Form ist...!
|
Re: Benutzerrechte
danke an alle,
es läuft.... fredi |
Re: Benutzerrechte
kommando zurück, es funkt doch nicht so wie es sollte.
bekomme bei zeile : vObj:=aSrv.Get('Win32_LogicalFileSecuritySetting=" C:\comp.txt"',0,vNVS); Klasse EOleException -> 'Ungültiger Objektpfad' den pfad und die datei comp.txt gibt es aber. weiß wer rat ? fredi |
Re: Benutzerrechte
Hallo fredi,
mir sind zwei "Fehler" aufgefallen:
Delphi-Quellcode:
Die Pfadangabe muss mit zwei Hochkommas angegeben werden, nicht mit ".
vObj := aSrv.Get('Win32_LogicalFileSecuritySetting=''C:\trace.txt''', 0, vNVS);
iRet := vObj.GetSecurityDescriptor(vObjDesc); Dann noch "SecurityDescriptor" statt "SecurityDescription". Ersetze die oberen Zeilen, dann sollte es funktionieren :) Wenigstens bei mir geht's so. Gruß s14 |
Re: Benutzerrechte
Hi s14,
danke für die hilfe, ich habe die Fileübergabe schon mit einem opendialog gelöst, weil ich mit den hochkommas und gänsefüsschen schon ein problem vorausgesehen habe, leider trotzdem ohne erfolg. vObj:=aSrv.Get('Win32_LogicalFileSecuritySetting=' + OpenDialog1.FileName,0,vNVS); danke auch für den hinweis des zweiten fehlers. Falls du noch eine idee hast, bite teil mir diese mit. fredi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz