Вопрос добавления приложения в раздел "Открыть с помощью..." системного меню в Windows 7 затрагивает использование реестра Windows. Обычно для редактирования ключей в реестре, таких как HKEY_CLASSES_ROOT, требуются административные права. Однако существует способ обойти эту необходимость.
Описание проблемы
Пользователи часто сталкиваются с проблемой, когда при попытке добавить ключ в раздел HKEY_CLASSES_ROOT в операционной системе Windows 7 без использования административных прав возникает ошибка. Это может быть вызвано, например, при попытке автоматически добавить приложение в список программ, которые могут открывать определенные типы файлов.
Пример кода, вызывающего ошибку
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
appfilename: string;
begin
appfilename:= application.ExeName;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
if not reg.KeyExists('Applications\MyAppName.exe\shell\open\command') then
begin
if reg.OpenKey('Applications\MyAppName.exe\shell\open\command', True) then
begin
reg.WriteString('', '"' + appfilename + '" "%1"');
reg.CloseKey;
end;
end;
// Важно: не забудьте освободить объект TRegistry, чтобы избежать утечки памяти
// Reg.Free;
end;
Подтвержденное решение
Для решения данной проблемы необходимо использовать другой раздел реестра, а именно HKEY_CURRENT_USER\Software\Classes. Изменения, внесенные в этот раздел, будут автоматически отображаться в HKEY_CLASSES_ROOT.
Пример кода с использованием HKEY_CURRENT_USER
procedure TForm1.AddAppInOpenWith;
var
Reg: TRegistry;
appfilename: string;
begin
appfilename:= application.ExeName;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
try
if not reg.KeyExists('Software\Classes\Applications\AppName.exe\shell\open\command') then
begin
if reg.OpenKey('Software\Classes\Applications\AppName.exe\shell\open\command', True) then
begin
reg.WriteString('', '"' + appfilename + '" "%1"');
reg.CloseKey;
end;
end;
finally
Reg.Free;
end;
end;
Комментарии и дополнительные сведения
Необходимо корректно освободить объект TRegistry для предотвращения утечки памяти. Это делается с помощью метода Free.
Использование манифеста также может быть альтернативным решением, но это обычно делается в установщике программы.
Важно понимать, что изменения в HKEY_CURRENT_USER будут применяться только для текущего пользователя, а не для всех пользователей системы.
Следуя этим рекомендациям, вы сможете добавить приложение в список программ, доступных для выбора в разделе "Открыть с помощью...", не требуя административных прав.
Пользователь ищет способ добавить запись в реестр `HKEY_CLASSES_ROOT` для включения приложения в меню 'Открыть с помощью' в Windows 7 без использования административных прав.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.