如何使用delphi从Vista或Windows 7中的Registry获取"连接usb信息"(设备实例ID,驱动程序密钥名称..)?Windows注册表中的此信息在哪里?我有一个代码,它在XP上运行但在Vista中没有.(c ++代码:http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx)为什么代码不能在Vista上运行?我真的很喜欢这个.请帮忙.
非常感谢你的回答.
RRU*_*RUZ 11
您可以使用WMI类Win32_DiskDrive.如果你需要获取有关逻辑驱动器的信息,你可以用这样的东西查询wmi
Select * Win32_LogicalDisk where DriveType = 2
Run Code Online (Sandbox Code Playgroud)
要从delphi 访问WMI,您必须使用Component-> Import Component-> Import type library-> Next - >"Select the library" - > Next-> Add unit to project-> Finish导入Microsoft WMIScripting V1.x库.
如果您需要有关USB设备的更多信息,您还可以查看下一课程
查看此示例(在Delphi 2007和Windows 7中测试)
program GetWMI_USBConnectedInfo;
{$APPTYPE CONSOLE}
uses
Classes,
ActiveX,
Variants,
SysUtils,
WbemScripting_TLB in '..\..\..\Documents\RAD Studio\5.0\Imports\WbemScripting_TLB.pas';
procedure GetUSBDiskDriveInfo;
var
WMIServices : ISWbemServices;
Root : ISWbemObjectSet;
Item : Variant;
i : Integer;
StrDeviceUSBName: String;
begin
WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
Root := WMIServices.ExecQuery('Select * From Win32_DiskDrive Where InterfaceType="USB"','WQL', 0, nil);//more info in http://msdn.microsoft.com/en-us/library/aa394132%28VS.85%29.aspx
for i := 0 to Root.Count - 1 do
begin
Item := Root.ItemIndex(i);
Writeln('Caption '+VarToStr(Item.Caption));
Writeln('DeviceID '+VarToStr(Item.DeviceID));
Writeln('FirmwareRevision '+VarToStr(Item.FirmwareRevision));
Writeln('Manufacturer '+VarToStr(Item.Manufacturer));
Writeln('Model '+VarToStr(Item.Model));
Writeln('PNPDeviceID '+VarToStr(Item.PNPDeviceID));
Writeln('Status '+VarToStr(Item.Status));
End;
end;
begin
try
CoInitialize(nil);
GetUSBDiskDriveInfo;
Readln;
CoUninitialize;
except
on E:Exception do
Begin
CoUninitialize;
Writeln(E.Classname, ': ', E.Message);
Readln;
End;
end;
end.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4346 次 |
最近记录: |