Что нового

проблема с запуском SafeDriveRemover.dll

proteus86

Новичок
Сообщения
9
Репутация
0
здрасте
тут я доделал прогу (прошу сильно не пинать в аутоит не разбираюсь ) по отключению флешки и любого носителя информации(флешки и переносные винчестеры отключаются точно)
но есть проблема
отработака библиотеки SafeDriveRemover.dll не происходит если создано несколько учетных записей(
подскажите из за чего длл не срабатывает
и вообще есть инфа как она работает ?
пример проги
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\Icon.ico
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <SafeDriveRemover.dll.au3>


Opt('TrayIconHide', 1)


Global $sSDR_DLL_PATH  = SDR_Dll_Extract_Proc() ;Разворачиваем либу
dim $i,$kkk,$kkk2,$var,$var2,$izvl=0,$i2,$i3
$var_system = DriveGetDrive("all")
$hDll = DllOpen(@AppDataCommonDir&"\WinLockDll.dll")
$aRet = DllCall ($hDll, "int", "CtrlAltDel_Enable_Disable", "int", "0")
While 3
$var_all = DriveGetDrive("all")
$i = $var_system[0]
$i2 = $var_all [0]
If $i2 > $i Then
$izvl = IniRead($var_all[$i2]&"\AUTORUN.INF\PCLock.ini","2","key",0)
		if $izvl <> 3  then
		SplashTextOn("АЛЯРМА", "Компьютер заблокирован! Идет извлечение незарегистрированного носителя информации.Подождите!", @DesktopWidth, @DesktopHeight, 1, 1, 0, "",25,600)
		BlockInput(1)
		DriveEject_Proc($var_all[$i2])

		Sleep(5000)
		EndIf
EndIf
SplashOff()
BlockInput(0)
Sleep(5000)
WEnd
Exit



Func DriveEject_Proc($sDrive)

    Local $strDriveLabel = StringMid($sDrive, 1, 1)
    Local $tblDllResult = DllCall($sSDR_DLL_PATH, "str", "SafeRemoveDrive", "str", $strDriveLabel)
    Local $iError = @error

EndFunc


Func SDR_Dll_Extract_Proc($strOutDLLName = "")
    If IsKeyword($strOutDLLName) Or $strOutDLLName = "" Or $strOutDLLName = -1 Then $strOutDLLName = "SafeRemoveDrive.dll"

    If FileExists(@AppDataCommonDir & "\" & $strOutDLLName) Then Return @AppDataCommonDir & "\" & $strOutDLLName

    Local $hFileDllOut = FileOpen(@AppDataCommonDir & "\" & $strOutDLLName, 2)
    FileWrite($hFileDllOut, Call("Get_SDR_DLL_Content_Proc"))
    FileClose($hFileDllOut)

    Return @AppDataCommonDir & "\" & $strOutDLLName
EndFunc
 
Верх