Зарегистрировал собственный тип файлов для своей программы. Со всеми проблемами разобрался, кроме одной.
Я хочу, чтобы
1) мой тип файлов открывался только моей программой (с этим проблем нет);
2) пользователь не мог переопределить программу, которой будет открываться мой тип файлов (тут и вопрос).
Если открыть свойства файла, вкладка "Общие", там будет приложение (моё), открывающее файлы моего типа,
и кнопка "Изменить...", которая позволяет выбрать другую программу, чтобы открыть этот файл.
А например если взять файл .exe, или .bat, или .lnk — то у них этой кнопки нет.
Какие значения в реестре для моего типа файлов нужно установить, чтобы у моего типа файлов не было кнопки
"Изменить..." или чтобы эта кнопка была отключена (disabled)?
Долго копался в реестре, экспериментировал с ключами реестра — до истины так и не добрался.
Может кто с этим разбирался, и пожет помочь?
Re: вопрос по зарегистрированному мной типу файлов
OS>Как насчет уважения вашего пользователя? Разве не пользователь решает OS>какой программой какой тип файлов он хочет открывать в своей системе?
Этот тип файлов не имеет смысла открывать другими программами, т.к. они понятия
не имеют (и не должны иметь) о структуре файла. Он относится только к моей программе.
Как раз наоборот, пользователь может по незнанию изменить ассоциацию этого типа
файлов, и программа будет работать некорректно.
И нужно как раз оградить пользователя от нечаянного изменения ассоциации, для его
же блага.
Re[3]: вопрос по зарегистрированному мной типу файлов
От:
Аноним
Дата:
29.03.10 15:53
Оценка:
B>Этот тип файлов не имеет смысла открывать другими программами, т.к. они понятия B>не имеют (и не должны иметь) о структуре файла. Он относится только к моей программе.
А если у какого-то формата такое же расширение какое вы выбрали. И ваша поставленная по ошибке много лет назад программа не даст ни за что его открыть по умолчанию?
Re[3]: вопрос по зарегистрированному мной типу файлов
Здравствуйте, Baskak, Вы писали:
B>Как раз наоборот, пользователь может по незнанию изменить ассоциацию этого типа B>файлов, и программа будет работать некорректно. B>И нужно как раз оградить пользователя от нечаянного изменения ассоциации, для его B>же блага.
Проверять ассоциацию при запуске, как это делают, например, браузеры. И опционально восстанавливать, после подтверждения пользователем. Именно опционально, уважать пользователя все-таки надо.
Если ты через несколько лет забьешь на свою программу и на ее пользователей, напишут open-source аналог, работающий с твоим супер-пупер форматом.
Re[4]: вопрос по зарегистрированному мной типу файлов
Формат не супер-пупер, просто такая задача передо мной поставлена. Если пользователю
программа не нравится, он может просто удалить ее и забыть о ней.
По-вашему получается, что Microsoft своих пользователей не уважает совсем. Вот захочет
кто-то, чтобы его тип файлов имел расширение .bat, а перетянуть ассоциацию на себя
не получится. Как по-вашему, MS очень неуважительно к пользователям относится?
Но хорошо, прислушиваясь к вашим советам (допустим вы правы), я хочу сделать опциональную
возможность запрещения изменения ассоциации, с возможностью отключения этой опции в настройках.
Это будет уважительно по отношению к пользователю, и удобно для него же в случае отсутствия
конфликтов по расширению.
Раз для .exe, .bat, .cmd, .pif, .lnk и прочих это сделано, можно предположить, что теоретически это
сделать возможно.
Вопрос все же звучал так: не знает ли кто, как это можно сделать практически?
Хотелось бы получить ответ на этот вопрос.
Re[5]: вопрос по зарегистрированному мной типу файлов
Здравствуйте, Baskak, Вы писали:
B>Формат не супер-пупер, просто такая задача передо мной поставлена. Если пользователю B>программа не нравится, он может просто удалить ее и забыть о ней.
B>По-вашему получается, что Microsoft своих пользователей не уважает совсем. Вот захочет B>кто-то, чтобы его тип файлов имел расширение .bat, а перетянуть ассоциацию на себя B>не получится.
Дык без проблем. Достаточно небольшого изменения в реестре и .bat файлы открываются твоей программой.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: вопрос по зарегистрированному мной типу файлов
Здравствуйте, ambel-vlad, Вы писали:
AV>Дык без проблем. Достаточно небольшого изменения в реестре и .bat файлы открываются твоей программой.
Вот, уже ближе.
Осталось выяснить, какие именно небольшие изменения в реестре нужны, и попробовать проделать противоположные
изменения с моим типом файлов.
Так может кто-нибудь все-таки уточнить, какие изменения нужно сделать в реестре, конкретно, чтобы ассоциацию
нельзя было испортить с помощью кнопки "Изменить...", или, другими словами, чтобы запрещено было вызывать
окно "Открыть с помощью..." для заданного типа файлов.
Re[7]: вопрос по зарегистрированному мной типу файлов
Здравствуйте, Baskak, Вы писали:
AV>>Дык без проблем. Достаточно небольшого изменения в реестре и .bat файлы открываются твоей программой.
B>Вот, уже ближе. B>Осталось выяснить, какие именно небольшие изменения в реестре нужны, и попробовать проделать противоположные B>изменения с моим типом файлов.
Открываешь ветку HKCR\.<ext> и смотришь. Поподробнее можно посмотреть или в MSDN или в сорцах MFC.
B>Так может кто-нибудь все-таки уточнить, какие изменения нужно сделать в реестре, конкретно, чтобы ассоциацию B>нельзя было испортить с помощью кнопки "Изменить...", или, другими словами, чтобы запрещено было вызывать B>окно "Открыть с помощью..." для заданного типа файлов.
Думаю, что скорее всего вряд ли такое возможно. Дело в том, что .exe, .bat и прочии достаточно специфические расширения. В любом случае, другая программа спокойно перебьет твои установки. И я полностью согласен с другими, что абсолютно нет смысла делать подобное. И сделал бы как предложил wildwind
Проверять ассоциацию при запуске, как это делают, например, браузеры. И опционально восстанавливать, после подтверждения пользователем. Именно опционально, уважать пользователя все-таки надо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: вопрос по зарегистрированному мной типу файлов
AV>Думаю, что скорее всего вряд ли такое возможно. Дело в том, что .exe, .bat и прочии достаточно специфические расширения. В любом случае, другая программа спокойно перебьет твои установки. И я полностью согласен с другими, что абсолютно нет смысла делать подобное. И сделал бы как предложил wildwind AV>
AV>Проверять ассоциацию при запуске, как это делают, например, браузеры. И опционально восстанавливать, после подтверждения пользователем. Именно опционально, уважать пользователя все-таки надо.
Я видимо соглашусь с вами. Да, так будет корректнее. И смысла запрещать изменение действительно мало, если хорошенько подумать.
Спасибо.
Re[7]: вопрос по зарегистрированному мной типу файлов
Здравствуйте, Baskak, Вы писали:
B>Вот, уже ближе. B>Осталось выяснить, какие именно небольшие изменения в реестре нужны, и попробовать проделать противоположные B>изменения с моим типом файлов.
Именно такие изменения проделывают вирусы и прочая нечисть. Потом появляются темы на форумах "Помогите, после вируса не запускаются екзешники/батники..." Так что если действительно интересно, можешь поискать/поспрашивать на соответствующих ресурсах
Re: вопрос по зарегистрированному мной типу файлов
Здравствуйте, Baskak, Вы писали:
B>Зарегистрировал собственный тип файлов для своей программы. Со всеми проблемами разобрался, кроме одной. B>Я хочу, чтобы B>1) мой тип файлов открывался только моей программой (с этим проблем нет); B>2) пользователь не мог переопределить программу, которой будет открываться мой тип файлов (тут и вопрос).
B>Если открыть свойства файла, вкладка "Общие", там будет приложение (моё), открывающее файлы моего типа, B>и кнопка "Изменить...", которая позволяет выбрать другую программу, чтобы открыть этот файл. B>А например если взять файл .exe, или .bat, или .lnk — то у них этой кнопки нет.
B>Какие значения в реестре для моего типа файлов нужно установить, чтобы у моего типа файлов не было кнопки B>"Изменить..." или чтобы эта кнопка была отключена (disabled)?
Я думаю, что это правило(с отсутствием кнопки "изменить") прибито гвоздями в коде, исполняемые файлы же.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.