Права доступа к файлу

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Права доступа к файлу

Сообщение Lunatic » 09.08.2010 (Пн) 14:31

Доброе время суток!
Такой вопрос возник. Создаю я файл, начинаю в него писать. Можно ли разрешить доступ другому процессу, для чтения из этого файла, не закрывая дескриптор?
Код: Выделить всё
hFile = CreateFile(Fname, GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ, SA, CREATE_ALWAYS, FILE_FLAG_DELETE_ON_CLOSE, ByVal 0&)

К примеру Ворду
Код: Выделить всё
Dim X As Object
Set X = CreateObject("Word.Application")
'X.Documents.Open Fname

Это вообще возможно? Или просто нужно где-то что-то кому-то передать)))

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Права доступа к файлу

Сообщение Хакер » 09.08.2010 (Пн) 14:37

Lunatic писал(а):GENERIC_READ + GENERIC_WRITE

Бред. Исправляй.

Вообще-то, судя по коду, у тебя сейчас всё сделано именно так, как ты хочешь.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Права доступа к файлу

Сообщение Lunatic » 09.08.2010 (Пн) 14:54

Исправил)). Код конечно стал красивее, но результативности не прибавилось. (Процесс не может получить доступ к файлу, так как файл занят другим процессом)

А что в lpSecurityAttributes, может там чё-то нужно (или в случае локального доступа, с неё тоже толку нет)

Код: Выделить всё
Dim SA As SECURITY_ATTRIBUTES
SA.nLength = Len(SECURITY_ATTRIBUTES)
SA.bInheritHandle = True
' InitializeSecurityDescriptor pSX, SECURITY_DESCRIPTOR_REVISION
' SetSecurityDescriptorDacl pSX, True, 0&, False
' SA.lpSecurityDescriptor = pSX

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Права доступа к файлу

Сообщение Хакер » 09.08.2010 (Пн) 15:27

Так может быть процесс хочет получить ещё и Write-доступ, и именно по этому обламывается?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Права доступа к файлу

Сообщение Lunatic » 09.08.2010 (Пн) 15:34

А узнать как? Или обойти?
Я ж больше ничего не требую от него, не сохранять, не редактировать, просто открыть файл этот)

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Права доступа к файлу

Сообщение FireFenix » 09.08.2010 (Пн) 17:13

Lunatic писал(а):А узнать как? Или обойти?
Я ж больше ничего не требую от него, не сохранять, не редактировать, просто открыть файл этот)

Кто ж знает что Word делает с файлами...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Права доступа к файлу

Сообщение Хакер » 09.08.2010 (Пн) 17:24

Он может требовать права на запись, чтобы, наоборот, не дать другим записать что-то в файл.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Права доступа к файлу

Сообщение Lunatic » 09.08.2010 (Пн) 17:27

Открыл AnVir посмотрел родителя процесса Word, оказалось что его породил svchost :shock: Выходит не всё так прямо как кажется.
Продел ту же махинацию с блокнотом запустив его через Shell, этот показал что создан VB6.exe

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Права доступа к файлу

Сообщение Lunatic » 09.08.2010 (Пн) 17:29

Мысль Хакера, о наглом процессе, может всё объяснить.

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Права доступа к файлу

Сообщение Lunatic » 11.08.2010 (Ср) 14:19

А что можете сказать насчёт FILE_FLAG_OVERLAPPED, я до конца не понял с ним. Еще нарыл CancelIo и CancelSynchronousIo из тех же степей.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Права доступа к файлу

Сообщение Хакер » 11.08.2010 (Ср) 14:49

Это не имеет никакого отношения к правам доступа.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Права доступа к файлу

Сообщение Lunatic » 11.08.2010 (Ср) 15:14

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

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Права доступа к файлу

Сообщение Lunatic » 12.08.2010 (Чт) 14:43

посоветуйте жирную книжку по общению через COM интерфейс с Word и другими Office документами.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Права доступа к файлу

Сообщение Хакер » 12.08.2010 (Чт) 14:53

Не нужно делать помойку из топика.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 100

    TopList