powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Лучший способ проверить наличие прав на установку компонентов, правку реестра?
19 сообщений из 19, страница 1 из 1
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101284
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброй тяпницы!

из сервиса надо проверить еслть ли у него достаточно прав на сабж.
Понятно, можно попробовать что то записать в реестр или зарегистрировать какой то com/dll но есть подозрение что есть лучший/более простой, возможно неочевидный способ. Речь о сессиях которые также же могут быть членами домена.
Поделитесь идеями.

Спасибо.
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101299
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Понятно, можно попробовать что то записать в реестр
Это единственный способ. Только записывать не обязательно. Достаточно попробовать открыть ветку реестра с флагом KEY_WRITE
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101307
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/en-us/windows/win32/api/securitybaseapi/nf-securitybaseapi-privilegecheck

Но вообще сначала угрохать уйму сил чтобы запустить сервис от имени
непривилегированного пользователя, а потом искать способ проверить, что у него
нет привилегий это как-то уж слишком по-пионерски...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101324
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

https://docs.microsoft.com/en-us/windows/win32/api/securitybaseapi/nf-securitybaseapi-privilegecheck

Но вообще сначала угрохать уйму сил чтобы запустить сервис от имени
непривилегированного пользователя, а потом искать способ проверить, что у него
нет привилегий это как-то уж слишком по-пионерски...


поскольку админ тоже может совершить ошибку и понизить права пользователя сервиса, проверять надо.
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101328
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

поищи функцию IsAdmin или как-то так, встроенная в винду
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101335
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747
hlopotun,

поищи функцию IsAdmin или как-то так, встроенная в винду


тут в принципе не всегда нужны все права админа, поэтому такая проверка скорее всего не подходит.
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101337
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
hlopotun
Понятно, можно попробовать что то записать в реестр
Это единственный способ. Только записывать не обязательно. Достаточно попробовать открыть ветку реестра с флагом KEY_WRITE

осталось подходяшую ветку подобрать, которая в любой винде есть и права доступа к которой соответствуют правам необходимым для регистрации com/dll.
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101343
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внезапно, но это ветка регистрации com/dll.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101346
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
осталось подходяшую ветку подобрать, которая в любой винде есть и права доступа к которой соответствуют правам необходимым для регистрации com/dll.
HKCR\CLSID для регистрации COM-сервера
HKCR\Interface, HKCR\TypeLib для регистрации библиотеки типов
HKCR для регистрации ProgID
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101347
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Внезапно, но это ветка регистрации com/dll.

внезапно это конечно можно предположить, но какой ключ в ней гарантированно сушествует всегда?
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101351
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ключ реестра для регистрации СОМ не существует, значит регистрация СОМ
невозможна. Сурприз?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101359
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я обязательно ли лезть вглубь, не достаточно ли будет что то вроде этого:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function TMyService.CheckServiceAccess: boolean;
var lReg: TRegistry;
begin
  try
    lReg := TRegistry.Create(KEY_WRITE);
    try
      lReg.RootKey := HKEY_CLASSES_ROOT;
      result := true;
    finally
      lReg.CloseKey();
      lReg.Free;
    end;
  except
    result := False;;
  end;
end;
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101360
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты сам решил лезть в бутылку вглубь. Весь этот код не нужен если
регистрация проверяется на ошибки (а она должна проверяться в любом случае).

За это время уже давно можно было бы избавиться от самих СОМ объектов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101362
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Ты сам решил лезть в бутылку вглубь. Весь этот код не нужен если
регистрация проверяется на ошибки (а она должна проверяться в любом случае).

За это время уже давно можно было бы избавиться от самих СОМ объектов.


регистрация проверяется. Речь о том что права могут быть изменены позднее, поэтому и проверка делается.
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101364
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие права? Позднее чего?
Если СОМ уже зарегистрировался, последующая невозможность его регистрации уже
сугубо безразлична, поскольку сама регистрация уже не нужна во второй раз.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101367
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Cobalt747
hlopotun,

поищи функцию IsAdmin или как-то так, встроенная в винду


тут в принципе не всегда нужны все права админа, поэтому такая проверка скорее всего не подходит.

обычно этого достаточно (да и необходимо) для проверки, можно ли (и есть ли смысл) писать в LOCAL_MACHINE

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// Включает (или отключает) виртуализацию (HKEY_LOCAL_MACHINE и др) (для Win7 и выше)
function SetRegistryVirtualization( bState: BOOL ): Boolean;
const
  TokenVirtualizationEnabled = 24;
var
  hToken : THANDLE;
begin
  if ( Win32MajorVersion > 6 ) or ( ( Win32MajorVersion = 6 ) and ( Win32MinorVersion >= 1 ) ) then begin // from Windows 7 - UAC
    Result := OpenProcessToken( GetCurrentProcess, MAXIMUM_ALLOWED, hToken );
    if Result then
      Result := SetTokenInformation( hToken, TTokenInformationClass( TokenVirtualizationEnabled ), @bState, sizeof( bState ) );
  end else
    Result := True; // Виртуализация и так невозможна в старой Windows
end;
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101370
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Какие права? Позднее чего?
Если СОМ уже зарегистрировался, последующая невозможность его регистрации уже
сугубо безразлична, поскольку сама регистрация уже не нужна во второй раз.


тут речь о сервисе регистрации com и проч. Смысл этого сервиса избавить админов на рабочих машинах вводить после каждого обновления пользователя имеющего права инсталляции com. Простой пользователь запускает обновление и программа обновления через сервис обновления (у которого достаточно прав) инсталлирует/обновляет com и проч новую лабуду. И проверка прав осуществляется исключительно самим этим сервисом самого себя на наличие прав регистрации/инсталляции. Никто не собирается перепроверять права самих com и проч.
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101371
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
многокаскадная прокто-стоматология
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
    #40101381
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunтут речь о сервисе регистрации com и проч.

Не выпендривайся и запускай его от Local System. Он для того и существует.

Хотя давно уже мог бы избавиться от СОМ вообще. Прокрастинуешь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Лучший способ проверить наличие прав на установку компонентов, правку реестра?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]