Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540

Работа с файловыми ассоциациями

09.05.2010, 00:24. Показов 2508. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток

Поставил для себя задачу: заставить ОС открывать *.расширение с помощью написанной мною программы.

У себя на борту имею Windows 7.
Начал охоту на реестр.

Что мне удалось выяснить:

1. Для того, чтобы включить приложение в список известных для ОС нужно создать одну из ветвей реестра:
Code
1
2
HKEY_CLASSES_ROOT\*имя_программы*
HKEY_CLASSES_ROOT\Applications\*имя программы*
Вторая ветвь создаётся системой в том случае, если пользователь не является администратором.
2. Для того, чтобы "последующие" пользователи по-умолчанию открывали тем ПО, которое укажу я, необходимо внести изменение (присвоить путь к ПО) в ветке:
Code
1
HKEY_CLASSES_ROOT\*тип_файла*\shell\open\command
3. Чтобы текущий пользователь начал пользоваться указанной программой необходимо изменить ветки:
Code
1
2
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\*тип_файла*\UserChoice
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\*тип_файла*\OpenWithList
Запустив написанной мною код, я получил ожидаемое.
Windows 7, Администратор - всё выполняется без проблем.

Тестирую дальше. Создаю пользователя с пониженными правами. Доступ на перезапись раздела HKEY_CLASSES_ROOT - отсутствует.

Итак, проблема 1:
Мне не удалось создать ветку
Code
1
HKEY_CLASSES_ROOT\Applications\*имя программы*
хотя система 100% создаёт именно её (выловил действия перехватчиком)
Кто знает, как заставить внести туда изменения - очень прошу помочь.

Проблема 2:
Запустил программу на Windows XP. Но ожидаемого результата не получил. В редакторе реестре с удивлением увидел, что система сама обновляет MRUList. Попробовал изменить эту переменную вручную... После F5 изменилась сама на то значение, которое "больше нравится ОС".
Прошу совета у тех, кто занимался ассоциациями в Windows XP... какие ещё ветки необходимо изменить?

Заранее большое спасибо за ответы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2010, 00:24
Ответы с готовыми решениями:

Вывод текста в блокнот файловыми потоками
Доброго времени суток. В C++ Builder XE столкнулся со следующей проблемой: при выводе в файл циклом переменных типа double (все с...

[filesystem, cross-platform] посоветуйте библиотеку для работы с файловыми путями
Добрый день. нужно что-то цивилизованное, что отвечает требованиям: 1. (важно) что бы можно было собирать целевой продукт...

Работа с файловыми потоками
Принцип работы проги: Открывается окно с ListView (Без чекбоксов и мультивыделения), в который атоматом загружаются из файлов.txt данные по...

4
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
09.05.2010, 12:52
MiCr0s0fT, у меня стоит XP, поэтому что там в "7" я понятия не имею.
Что касается XP, то здесь написанно, какие ветви нужно изменить:
http://www.cyberguru.ru/progra... age30.html
http://www.cyberguru.ru/progra... age31.html
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
09.05.2010, 13:39  [ТС]
Ni'Tan, первую ссылку я находил уже давно... В ней ничего интересного... Запись идёт в ветку HKEY_CLASSES_ROOT, простой пользователь туда не запишет. А даже если записать администратору, то возникнет такая ситуация, что при записи в HKEY_CURRENT_USER зарегистрированное в HKEY_CLASSES_ROOT приложение просто утратит приоритет.

А вот вторая ваша ссылка, почему-то у меня пустая в разных браузерах (даже в исходнике) ... Никакого текста... Если там что-то есть - пришлите пожалуйста сюда.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
09.05.2010, 14:17
Хм....Вторая ссылка и вправду нерабочая. Странно, раньше была...
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
10.05.2010, 17:49  [ТС]
Сегодня подсказали попробовать вносить изменения по адресу:

Code
1
HKEY_CURRENT_USER\Software\Classes\Applications
и поправить
Code
1
HKEY_CURRENT_USER\Software\Classes\*тип*
Не помогло.

Система просто пропустила этот раздел.
Чтение идёт из ветви:
Code
1
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\*тип*\UserChoice
Когда я изменяю значение Progid - система реагирует, но не может открыть файл, т.к. не находит программу в разделе HKCR\Applications

Как только один тип файла я открываю с помощью "системы" - все остальные типы начинают работать ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2010, 17:49
Помогаю со студенческими работами здесь

Работа с файловыми потоками в С++.
Помогите разобратсья в программе: Дан символьный файл f. Подсчитать число вхождений в файл каждой из букв a, b, c, d, e, f. Результат...

Работа с файловыми потоками
Получилось по заданию примерно как то так:Постановка задачи Входные данные: текстовый файл, содержащий значения средних температур за...

Работа с файловыми потоками
Доброго времени суток! Мне нужно из Данного числового файла f. Выбрать все значения, которые делятся нацело на 2 и 4, но не делятся на...

Работа с файловыми потоками
Подскажите. Мне нужно считывать из файла базу данных. Первый элемент каждой строки эта фамилия. Последующие элементы это баллы. У каждой...

Работа с файловыми потоками
Доброго времени суток! Мне нужно из Данного числового файла f. Выбрать все значения, которые делятся нацело на 2 и 4, но не делятся на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru