devil00x
شنبه 26 فروردین 1391, 19:54 عصر
با سلام خدمت دوستان عزیز.
من می خوام با wmi در رجیستری subkey های یک کلید رو بخوانم و نمایش بدم.
برای این کار از کلاس StdRegProv بایستی متد EnumKey را فراخوانی کرد، هر طور که می نویسم خطا می دم هر چی هم گشتم نمونه دلفی اون رو پیدا نکردم. خود msdn یک نمونه vbs گذاشته اونو اینجا قرار می دم از دوستان هر کس که می تونه یک نمونه قایل اجرای اونو تو دلفی برام بزاره ممنون میشم.
نمونه vbs:
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
WScript.Echo "Subkeys under " _
& "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es"
For Each subkey In arrSubKeys
WScript.Echo subkey
Next
اما کدی که من نوشتم :
CoInitialize(nil);
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\default', '', '');
FWbemObjectSet:= FWMIService.Get('StdRegProv');
StrKeyPath:='HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont rolSet\Services';
FWbemObjectSet.EnumKey(HKEY_LOCAL_MACHINE,FInParam s.sSubKeyName,SubKeyNames);
این خط پیغام خطا می ده
-->error --> [DCC Error] Unit1.pas(58): E2160 Type not allowed in OLE Automation call
for name in SubKeyNames do
begin
Memo1.Lines.Add(Name);
end;
من می خوام با wmi در رجیستری subkey های یک کلید رو بخوانم و نمایش بدم.
برای این کار از کلاس StdRegProv بایستی متد EnumKey را فراخوانی کرد، هر طور که می نویسم خطا می دم هر چی هم گشتم نمونه دلفی اون رو پیدا نکردم. خود msdn یک نمونه vbs گذاشته اونو اینجا قرار می دم از دوستان هر کس که می تونه یک نمونه قایل اجرای اونو تو دلفی برام بزاره ممنون میشم.
نمونه vbs:
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
WScript.Echo "Subkeys under " _
& "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es"
For Each subkey In arrSubKeys
WScript.Echo subkey
Next
اما کدی که من نوشتم :
CoInitialize(nil);
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\default', '', '');
FWbemObjectSet:= FWMIService.Get('StdRegProv');
StrKeyPath:='HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont rolSet\Services';
FWbemObjectSet.EnumKey(HKEY_LOCAL_MACHINE,FInParam s.sSubKeyName,SubKeyNames);
این خط پیغام خطا می ده
-->error --> [DCC Error] Unit1.pas(58): E2160 Type not allowed in OLE Automation call
for name in SubKeyNames do
begin
Memo1.Lines.Add(Name);
end;