Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: NTFS - сжатый, зашифрованный. Добавлено: 17.07.04 23:41  

Автор вопроса:  NorN | Web-сайт: replace.com.ru
Пожалуйста, подскажите, как считать атрибут шифрованый и сжатый (NTFS).
Спасибо!

Ответить

  Ответы Всего ответов: 33  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 17.07.04 23:49
Исппользуй GetFileAttributes, а флажки тебе вот такие помогут:
- FILE_ATTRIBUTE_COMPRESSED
- FILE_ATTRIBUTE_ENCRYPTED

Ответить

Номер ответа: 2
Автор ответа:
 NorN



Вопросов: 7
Ответов: 15
 Web-сайт: replace.com.ru
 Профиль | | #2
Добавлено: 19.07.04 15:50
Ну, а дальше? При использовании GetFileAttributes я получаю число из нескольких атрибутов и что мне с ним делать, как определить кто стоит? Перебором чтоли?

Ответить

Номер ответа: 3
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #3 Добавлено: 19.07.04 16:25
Проверкой флажков. Вот, например:
Dim fa as Long
fa = GetFileAttributes("c:\autoexec.bat";)
If (fa And FILE_ATTRIBUTE_ENCRYPTED) Then MsgBox "Файл зашифрован"

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 19.07.04 16:35
Не уверен, но скорее всего правильней было бы так:

If (fa And FILE_ATTRIBUTE_ENCRYPTED) = FILE_ATTRIBUTE_ENCRYPTED Then...

Если я не прав, поправьте... но по-идее должно быть так...

Ответить

Номер ответа: 5
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #5 Добавлено: 19.07.04 16:40
>to sne: как раз так как я написал (я проверил).
If (fa And FILE_ATTRIBUTE_ENCRYPTED) проверяет установленные разряды (типа побитового сравнения) и возвращает True, если разряды (то бишь флажок) установлен...

Ответить

Номер ответа: 6
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #6 Добавлено: 19.07.04 16:44
вдогонку: Помнится об этом еще CyRax писал:
fa Or FILE_ATTRIBUTE_ENCRYPTED - устанавливает разряды
fa Xor FILE_ATTRIBUTE_ENCRYPTED - сбрасывает разряды (а может инвертирует ?)
fa And FILE_ATTRIBUTE_ENCRYPTED - проверяет, что разряды установлены в 1

Ответить

Номер ответа: 7
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #7
Добавлено: 19.07.04 17:06
Вообще то я думал что булевая операция для AND основывается на флагах.

        Usage: AND dest,src
        Modifies flags: CF OF PF SF ZF (AF undefined)
        Performs a logical AND of the two operands replacing the destination
        with the result.

 Наверное я ошибался. Скорее всего она работает с числами.
 Хотя наверное по флагу джамп можно сделать.

 Короче два варианта. VB либо проверяет число либо флаги.
 Можно дизассемблировать прогу и глянуть.

Ответить

Номер ответа: 8
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #8
Добавлено: 19.07.04 17:08
 Под булевой операцией я подразумевал это:
 fa And FILE_ATTRIBUTE_ENCRYPTED = TRUE/FALSE

Ответить

Номер ответа: 9
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #9 Добавлено: 19.07.04 17:23
Нашел фрагмент в MSDN (помимо логического сравнения выполняется также и побитовое):

result = expression1 And expression2

"The AND operator also performs a bitwise comparison of identically positioned bits in two numeric expressions and sets the corresponding bit in result..."

Ответить

Номер ответа: 10
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #10 Добавлено: 19.07.04 17:24
вдогонку: выбор вида сравнения логическое/побитовое похоже выбирается из контекста программы

Ответить

Номер ответа: 11
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #11
Добавлено: 19.07.04 17:28
 А по моему это одно и тоже, если конечно не имеются ввиду знаковые биты. Да и они в принципе являются частью числа.

Ответить

Номер ответа: 12
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 19.07.04 17:37
Андрей, вот как раз как ты написал, это возможны случайные (не)срабатывания...
Сам в математике не силен, но в MSDN с флагами/Аттрибутами работают именно так!

Заметь, при срабатывании что при срабатывании данного условия, возвращаемый результат именно окажется равен той константе, с который ты сравниваешь...

Ну а поскольку конструкция If Then End If явдяется логической, т.е. либо да либо нет, то и данные ей желательно такие подсовывать... а не что в голову приходит :)
Лично у меня уже сколько раз было такое, что логически все верно, а условие - не срабатывает...

Если же использовать (fa And FILE_ATTRIBUTE_ENCRYPTED) = FILE_ATTRIBUTE_ENCRYPTED, то в качестве возвращаемого резуультата будет либо ложь, либо истина...

сам посмотри:
msgbox (23 and 4)
msgbox ((23 and 4) = 4)

Ответить

Номер ответа: 13
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #13
Добавлено: 19.07.04 18:00
sne,
 if(fa And FILE_ATTRIBUTE_ENCRYPTED) THEN

Такая конструкция правильная. Булевая операция - это только 1/0. Если искомого числа нет, то она вернёт тебе ноль, если есть - не ноль.
 Несрабатывания врядли тут могут быть. Разве что глюк VB.

Dim IsPresent As Boolean
IsPresent = 7 And 4
MsgBox IsPresent
IsPresent = 8 And 4
MsgBox IsPresent

 if(fa And FILE_ATTRIBUTE_ENCRYPTED) - это то же что If TRUE THEN

Ответить

Номер ответа: 14
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #14
Добавлено: 19.07.04 18:04
 или
 if (fa And FILE_ATTRIBUTE_ENCRYPTED)<>0 Then

Ответить

Номер ответа: 15
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #15 Добавлено: 19.07.04 18:10
>to sne: Считаю что ты тоже прав :)
------------
X=23 ' 10111
Y=4 ' 100
X and Y - конечно вернет 100 (4) ведь проверяются все биты входящие в Y.
------------
а насчет логической формы выражения:
If (fa And FILE_ATTRIBUTE_ENCRYPTED) then ...
даже не могу тебе с ходу аргументы представить (клинит что-то, никак не могу представить процесс сравнения и преобразования в логический результат, наверное все же придется взглянуть на дизассемблированный вариант, как сказал CyRax), но это потом и то "может быть"... :)))

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам