Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Лучший способ проверить наличие прав на установку компонентов, правку реестра? / 19 сообщений из 19, страница 1 из 1
01.10.2021, 12:50
    #40101284
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
Всем доброй тяпницы!

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

Спасибо.
...
Рейтинг: 0 / 0
01.10.2021, 13:07
    #40101299
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
hlopotun
Понятно, можно попробовать что то записать в реестр
Это единственный способ. Только записывать не обязательно. Достаточно попробовать открыть ветку реестра с флагом KEY_WRITE
...
Рейтинг: 0 / 0
01.10.2021, 13:14
    #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
01.10.2021, 13:53
    #40101324
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
Dimitry Sibiryakov

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

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


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

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

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


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

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

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

внезапно это конечно можно предположить, но какой ключ в ней гарантированно сушествует всегда?
...
Рейтинг: 0 / 0
01.10.2021, 14:48
    #40101351
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
Если ключ реестра для регистрации СОМ не существует, значит регистрация СОМ
невозможна. Сурприз?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.10.2021, 15:08
    #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
01.10.2021, 15:13
    #40101360
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
Ты сам решил лезть в бутылку вглубь. Весь этот код не нужен если
регистрация проверяется на ошибки (а она должна проверяться в любом случае).

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

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

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


регистрация проверяется. Речь о том что права могут быть изменены позднее, поэтому и проверка делается.
...
Рейтинг: 0 / 0
01.10.2021, 15:26
    #40101364
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
Какие права? Позднее чего?
Если СОМ уже зарегистрировался, последующая невозможность его регистрации уже
сугубо безразлична, поскольку сама регистрация уже не нужна во второй раз.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.10.2021, 15:36
    #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
01.10.2021, 15:42
    #40101370
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лучший способ проверить наличие прав на установку компонентов, правку реестра?
Dimitry Sibiryakov

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


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

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

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


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