Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816

Как открыть файл, занятый другой программой

26.09.2014, 19:55. Показов 1797. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, нужно открыть на чтение залоченый файл. Кто знает как?
C++
1
CreateFile(filename, FILE_READ_DATA, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL |FILE_FLAG_SEQUENTIAL_SCAN, NULL);
ERROR_SHARING_VIOLATION
32 (0x20)
The process cannot access the file because it is being used by another process.

Открыть точно можно, так как есть программы, которые это делают. Вопрос в том, как.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.09.2014, 19:55
Ответы с готовыми решениями:

Как открыть файл программой по умолчанию
Нужно по нажатию на кнопку сразу открыть файл word.docx , без появления OpenFileDialog1

Как открыть файл из папки с программой?
Здравствуйте, как правильно указать путь, чтобы файл открылся из папки с программой? Пробовал '\Карты\Учебник\Высшая математика.doc' и...

Как открыть файл программой по умолчанию
Всем привет, у меня вопрос следующего характера. Как моему приложению запустить внешненее приложение по умолчанию. Например, я хочу открыть...

5
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
26.09.2014, 22:09
Цитата Сообщение от dmitry94 Посмотреть сообщение
Открыть точно можно, так как есть программы, которые это делают. Вопрос в том, как.
1) Поиграть с флагами. Например, попробовать кроме FILE_SHARE_READ
поставить еще FILE_SHARE_WRITE и FILE_SHARE_DELETE.

2) Попробовать включить привилегию SE_BACKUP_NAME и открыть
файл с флагом FILE_FLAG_BACKUP_SEMANTICS.

Если не поможет, тогда путь один - искать и закрывать хэндлы
этого файла в чужих процессах. Или вообще драйвер FS писать...
1
27.09.2014, 01:33

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
Или вообще драйвер FS писать...
Ага, а потом BSODы ловить :)

0
27.09.2014, 01:36

Не по теме:

ISergey, ирония понятна, но драйверы отнюдь не
такие страшные, как о них принято думать.

0
27.09.2014, 01:43

Не по теме:

Это понятно.. но их тестить нужно очень жостко (так как баг в релизе это полный ппц)
Недавно на работе гоняли драйвер что ушел в релиз..

Windows 7x32 SP1 на виртуальной машине VMware Workstation 10.0.3 build-1895310.
Windows чистая. Из софта установлен Far (запущен из автозагрузки) и WinDbg. Активированы две конфигурации - обычная и с отладчиком.
1. Загрузка в конфигурации без отладчика. Учетная запись администратора, UAC выключен.
2. Установка *****-setup.exe (пробная версия) и обновление (05.08.2014 около 23.00).
3. Цепляем verifier на *****.sys со стандартными параметрами.
4. В *** : глубокое сканирование, эвристика на максимум.
5. Перезагрузка (для verifier) и запуск сканирования.
6. Во время сканирования включаем "сканирование в реальном времени" - BSOD. После перезагрузки снял дамп в MEMORY01.DMP.

После копирования дампа MEMORY01.DMP пробую в тех же самых условиях - BSOD снова воспроизводится.
После перезагрузки и паузы минут в 15, после включения "сканирование в реальном времени" и попытки скопировать в шару вмвары дамп от прошлого падения опять BSOD.
После перезагрузки (просто хочу забрать дамп) опять BSOD.
После перезагрузки (просто хочу забрать дамп) опять BSOD - я просто фигею!
Дамп MEMORY02.DMP я просто вытащил из образа вмвары.

Дампы я глянул. Символов у меня, конечно, нет но дампы орут и по стекам навскидку видно что у *****.sys есть проблемы с ACCESS_MASK при референсе хендла под верифаейером.

я думаю что идет вызов ObReferenceObjectByHandle с KPROCESSOR_MODE AccessMode == KernelMode. А надо бы с ExGetPreviousMode().
А KernelMode поставили потому что иногда ObReferenceObjectByHandle обламывается из за ACCESS_MASK DesiredAccess.
А при KernelMode не чекается безопасность. Верифаейр видит что юзермодный хендл референсится с KernelMode и поэтому валит систему.

0
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
27.09.2014, 05:15  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
1) Поиграть с флагами. Например, попробовать кроме FILE_SHARE_READ
поставить еще FILE_SHARE_WRITE и FILE_SHARE_DELETE.
Решилось сочетанием флагов:
FILE_SHARE_READ | FILE_SHARE_WRITE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2014, 05:15
Помогаю со студенческими работами здесь

Как открыть файл указанной программой
Доброго дня! Есть файл, который может быть открыть различными приложениями, а мне нужно чтобы он запускался конкретно мною указанной. Как...

Как открыть файл лежащий рядом с программой
Пишу на visual studio 2008 c# для смарт устройства на Win CE 6.0 Как открыть файл лежащий рядом с программой? private void...

Как открыть файл программой по умолчанию по гиперссылке в DataGridView
Доброго времени суток! Небольшое вступление. Пишу небольшую программу для формирования доументов по определенному шаблону (документы в...

Как ассоциировать расширение со своим приложением и открыть файл своей программой
На последней стадии реализации своей программы задался вопросом. А как сделать так, что бы при открытии определённого файла, он открывался...

Как открыть файл той программой тип которой отвечает за открытие этого файла?
Например когда запускаешь файл *.txt то открывается программа NotePad и текст который был в этом файле загружается в TextBox который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru