Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.03.2013, 09:01
Flow_ Flow_ вне форума
Прохожий
 
Регистрация: 17.03.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Доступ к секретным разделам реестра

Приветствую! Как можно получить доступ к секретным разделам реестра? К примеру:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDMgmt

На просторах инета вычитал что к подобным разделам есть доступ только у системы, но сделать это можно через LsaOpenPolicy/LsaRetrievePrivateData/LsaStorePrivateData, но про то как это сделать я ничего толкового не нашел. Может кто сталкивался с чем-то подобным? Или есть другой способ?
Ответить с цитированием
  #2  
Старый 17.03.2013, 09:59
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,068
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Regedit открывает. Соответсвенно, и любая программа может открыть.
Единсивенное что, возможно, придется работать с функциями API, т.к. потребуется собрать дескриптор безопасности для доступа к этой ветке.
Ответить с цитированием
  #3  
Старый 17.03.2013, 11:14
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

Я так понимаю это в Семёрке. Ну или в Висте. В ХР нет же? Или есть что-то, чего RegEdit не показывает?
Ответить с цитированием
  #4  
Старый 17.03.2013, 12:28
Flow_ Flow_ вне форума
Прохожий
 
Регистрация: 17.03.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от BBBCat
Я так понимаю это в Семёрке. Ну или в Висте. В ХР нет же? Или есть что-то, чего RegEdit не показывает?

Да, речь о Семерке. Проблема в том что смысла от Regestry.OpenKeyReadOnly нет, т.е. таким методом ключ не создать. Покопавшись в нете, я пришел к выводу, что для доступа к этому разделу (он такой далеко не единственный) нужны права системы (т.е. доступ есть только у системы), и получить (обойти) их как-то можно через функции LSA что в API. Возможно сразу не совсем понятно написал, но доступа нет программно, через regedit все это делается.
Ответить с цитированием
  #5  
Старый 17.03.2013, 12:31
Flow_ Flow_ вне форума
Прохожий
 
Регистрация: 17.03.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Regedit открывает. Соответсвенно, и любая программа может открыть.
Единсивенное что, возможно, придется работать с функциями API, т.к. потребуется собрать дескриптор безопасности для доступа к этой ветке.

Собственно вопрос как это сделать? К сожалению не обладаю достаточными знаниями
Ответить с цитированием
  #6  
Старый 17.03.2013, 12:56
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

У меня регэдит не нашел эту ветку. Win7 x64.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 17.03.2013, 13:20
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

А с правами админа запускать программу пробовали?
У меня 8ка, ключ такой есть и regedit его спокойно открывает. Программно не проверял, ибо лень.
Ответить с цитированием
  #8  
Старый 17.03.2013, 15:20
Flow_ Flow_ вне форума
Прохожий
 
Регистрация: 17.03.2013
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от ChinYan
А с правами админа запускать программу пробовали?
У меня 8ка, ключ такой есть и regedit его спокойно открывает. Программно не проверял, ибо лень.

Да с regedit все ок, а во программно ... . С админом запускал, и через manifest и через контекстное.
Ответить с цитированием
  #9  
Старый 17.03.2013, 16:15
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

А вот это не о том?
Код:
procedure SetRegKeySecurity(KeyRoot : HKEY; KeyName : String);
var
  Privs : IJwPrivilegeScope;
  Key : HKEY;
  KeySec : TJwSecureRegistryKey;
  DACL : TJwDAccessControlList;
begin
  JwInitWellKnownSIDs; //inits JwSecurityProcessUserSID

  if RegOpenKeyEx(KeyRoot, PChar(KeyName), 0, KEY_ALL_ACCESS, Key) = ERROR_ACCESS_DENIED then
  begin
    Privs := JwGetPrivilegeScope([SE_TAKE_OWNERSHIP_NAME], pst_Enable);

    if RegOpenKeyEx(KeyRoot, PChar(KeyName), 0, WRITE_OWNER, Key) <> 0 then
      RaiseLastOSError;

    try
      TJwSecureRegistryKey.TakeOwnerShip(Key);

      if RegOpenKeyEx(KeyRoot, PChar(KeyName), 0, WRITE_DAC, Key) <> 0 then
        RaiseLastOSError;


      KeySec := TJwSecureRegistryKey.Create(Key);
      try
        DACL := KeySec.DACL; //returns a cached DACL so we must not free it!

        DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afContainerInheritAce], KEY_ALL_ACCESS, JwSecurityProcessUserSID));
        KeySec.SetDACL(DACL);
      finally
        KeySec.Free;
      end;
    finally
      RegCloseKey(Key)
    end;
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter