PDA

Показать полную графическую версию : [решено] Заблокировать файл на Win 7


morgan1991
14-02-2010, 20:48
Здравствуйте!
Не помню где, качал утилиту Block от Creat0R-а вродибы.
Из неё использовал только одну часть:

Func _CreateFile($sFile) ; Функция блокировки файлов/папок
Local Const $GENERIC_READ = 0x80000000
Local Const $GENERIC_WRITE = 0x40000000
Local Const $TempAllFile_FLAG_BACKUP_SEMANTICS = 0x02000000
Local Const $OPEN_EXISTING = 3

Local $iFolderOpen = 0
If _IsFolder($sFile) Then $iFolderOpen = $TempAllFile_FLAG_BACKUP_SEMANTICS

$sFile = "\\.\" & $sFile

Local $aRet = DllCall("kernel32.dll", "hwnd", "CreateFile", _
"str", $sFile, _
"int", BitOR($GENERIC_READ, $GENERIC_WRITE), _
"int", 0, _
"ptr", 0, _
"int", $OPEN_EXISTING, _
"int", $iFolderOpen, _
"int", 0)
Return $aRet[0]
EndFunc

Func _IsFolder($sPath) ; Функция предназначена для проверки, является ли заданый путь каталогом
Return StringInStr(FileGetAttrib($sPath & "\"), "D")
EndFunc

Дак вот на XP работало отлично, а на Windows 7 ноль эмоций...
Помогите пожалуйста, как заблокировать файл для использование на Windows 7?

Creat0R
15-02-2010, 00:52
Судя по MSDN (http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx), в Vista требуются права администратора:

Requires Admin rights on Vista+

Note: Using Windows XP both administrators/standard accounts don't require administrative rights to obtain a device handles.

This has changed on Vista, Windows 7 (UAC) where you MUST have administrator rights to obtain device handles.

1) Use a service
2) Use COM elevation moniker
3) Use Manifest

morgan1991
15-02-2010, 10:29
запускал из под админа, не помогает

Yashied
15-02-2010, 19:28
А что возвращает функция _CreateFile() и что ты пытаешься заблокировать: файл или папку?

morgan1991
15-02-2010, 21:17
Сори, понял, просто системные папки и файлы не блочятся. Возвращает 0xFFFFFFFF.




© OSzone.net 2001-2012