Delphi获取U盘唯一标识符判断程序运行位置
Delphi获取U盘唯一标识符并判断程序运行位置
在Delphi开发中,有时需要获取U盘的唯一标识符,例如判断程序是否运行在U盘上。可以使用以下步骤实现:
- 调用Windows API函数
GetLogicalDrives
获取系统中所有逻辑驱动器。 - 遍历每个逻辑驱动器,使用
GetDriveType
函数判断驱动器类型是否为DRIVE_REMOVABLE
(可移动磁盘)。 - 如果是可移动磁盘,则使用
GetVolumeInformation
函数获取卷信息,包括卷序列号。 - 将获取到的卷序列号转换为字符串,即为U盘的唯一标识符。
判断程序是否在U盘运行:
- 获取程序当前运行路径,可以使用
Application.ExecutablePath
或ParamStr(0)
。 - 比较程序路径与获取到的U盘唯一标识符,如果包含则表示程序运行在U盘上。
代码示例:
function IsRunningFromUSB: Boolean;
var
DriveLetter: Char;
DriveType: UINT;
VolumeSerialNumber: DWORD;
VolumeNameBuffer: array[0..255] of Char;
FileSystemFlags: DWORD;
FileSystemNameBuffer: array[0..255] of Char;
begin
// 遍历所有逻辑驱动器
for DriveLetter := 'A' to 'Z' do
begin
DriveType := GetDriveType(PChar(DriveLetter + ':'));
if DriveType = DRIVE_REMOVABLE then
begin
// 获取卷信息
if GetVolumeInformation(
PChar(DriveLetter + ':'),
VolumeNameBuffer,
SizeOf(VolumeNameBuffer),
@VolumeSerialNumber,
nil,
@FileSystemFlags,
FileSystemNameBuffer,
SizeOf(FileSystemNameBuffer)
) then
begin
// 判断程序路径是否包含U盘唯一标识符
if Pos(IntToHex(VolumeSerialNumber, 8), Application.ExecutablePath) > 0 then
begin
Result := True;
Exit;
end;
end;
end;
end;
Result := False;
end;
注意:
- 以上代码仅供参考,实际使用时需要根据具体情况进行调整。
- 获取到的U盘唯一标识符可能因系统或U盘的不同而有所差异。
217.61KB
文件大小:
评论区