PDA

View Full Version : قفل کردن فلش مموری بوسیله vb



xrezax
یک شنبه 26 آبان 1392, 14:30 عصر
چطور میشه یک درایو قفل کرد؟
مثلاً یک فلش رو طوری قفل کنم که به هیچ وجه نشه از توش فایلی کپی بشه

بهروز عباسی
یک شنبه 26 آبان 1392, 14:57 عصر
توی این قطعه کد از چند تا تابع API استفاده کردم اگه به درد خورد به VB تبدیلش کن و حالشو ببر .

* این برنامه فقط تا وقتی که در حال اجرا باشه اجازه دسترسی به فلش رو نمیده.

function Lock_USB_Drive(const ADriveName: AnsiChar): BOOL;
{
Coded by me :-)


The volume stays locked as long as your application keeps the handle open !
}
function CTL_CODE(_DeviceType, _Function, _AMethod, _Access: integer): DWORD;
begin
Result := (_DeviceType shl 16) or (_Access shl 14) or (_Function shl 2) or
(_AMethod);
end;

var
hDevice: THandle;
bytesReturned, FSCTL_LOCK_VOLUME: DWORD;
const
FILE_DEVICE_FILE_SYSTEM = $00000009;
METHOD_BUFFERED = 0;
FILE_ANY_ACCESS = 0;
// FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
// FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
begin

hDevice := CreateFile(Pchar(Format('\\.\%s:', [ADriveName])), GENERIC_READ or
GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
OPEN_EXISTING, 0, 0);
if not (hDevice <> INVALID_HANDLE_VALUE) then
begin
Exit(False);
end
else
begin
FSCTL_LOCK_VOLUME := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED,
FILE_ANY_ACCESS);
DeviceIoControl(hDevice, FSCTL_LOCK_VOLUME, nil, 0, nil, 0,
bytesReturned, nil);
Result := True;
end;
end;

xrezax
یک شنبه 26 آبان 1392, 15:02 عصر
خوب چطور برازم توی فلش که بدون نیاز به اجرا کردن خودش اجرا بشه؟ آتوران فک کنم آنتی پاکش کنه

setroyd
چهارشنبه 29 آبان 1392, 09:34 صبح
اون چیزی که شما میخوای شدنی نیست ! مگه میشه برنامه ای اجرا نشه و کار کنه ! autorun هم باشه طرف میره دستی پاک میکنه ! شما یا باید از رجیستری ببندیش . یا از پورت ببندیش یا....... که باز هم نیاز به یکبار اجرا داره نرم افزار !