Сообщение Re: Детект прав админа у пользователя от 28.03.2024 16:43
Изменено 28.03.2024 16:46 Pavel Dvorkin
Re: Детект прав админа у пользователя
Здравствуйте, VladD2, Вы писали:
VD>В продукте есть функционал по обновлению стороннего софта. Для большинства обновлений требуются права администратора. В этом случае пользователю выдается стандартный виндовый диалог ввода учетки и пароля.
VD>Стоит задача понять, что пользователь имеет права локального админа (и стало быть способен произвести обновление софта).
VD>Желательно сделать проверку без привлечения лишних (особенно сторонних) либ.
VD>Как проще всего это сделать?
VD>На входе есть имя учетки (включая домен или имя компа) и пароль.
LogonUser взять здесь и получить safeTokenHandle
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsimpersonationcontext?view=netframework-4.8.1&viewFallbackFrom=net-8.0
Потом сделать WindowsIdentity по нему
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsidentity.-ctor?view=net-8.0#system-security-principal-windowsidentity-ctor(system-intptr)
А потом по нему получить WindowsPrincipal и проверить роль
https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
Как-то примерно так
VD>В продукте есть функционал по обновлению стороннего софта. Для большинства обновлений требуются права администратора. В этом случае пользователю выдается стандартный виндовый диалог ввода учетки и пароля.
VD>Стоит задача понять, что пользователь имеет права локального админа (и стало быть способен произвести обновление софта).
VD>Желательно сделать проверку без привлечения лишних (особенно сторонних) либ.
VD>Как проще всего это сделать?
VD>На входе есть имя учетки (включая домен или имя компа) и пароль.
LogonUser взять здесь и получить safeTokenHandle
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsimpersonationcontext?view=netframework-4.8.1&viewFallbackFrom=net-8.0
Потом сделать WindowsIdentity по нему
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsidentity.-ctor?view=net-8.0#system-security-principal-windowsidentity-ctor(system-intptr)
А потом по нему получить WindowsPrincipal и проверить роль
https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
Как-то примерно так
Re: Детект прав админа у пользователя
Здравствуйте, VladD2, Вы писали:
VD>В продукте есть функционал по обновлению стороннего софта. Для большинства обновлений требуются права администратора. В этом случае пользователю выдается стандартный виндовый диалог ввода учетки и пароля.
VD>Стоит задача понять, что пользователь имеет права локального админа (и стало быть способен произвести обновление софта).
VD>Желательно сделать проверку без привлечения лишних (особенно сторонних) либ.
VD>Как проще всего это сделать?
VD>На входе есть имя учетки (включая домен или имя компа) и пароль.
LogonUser взять здесь и получить safeTokenHandle
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsimpersonationcontext?view=netframework-4.8.1&viewFallbackFrom=net-8.0
Потом сделать WindowsIdentity по нему
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsidentity.-ctor?view=net-8.0#system-security-principal-windowsidentity-ctor(system-intptr)
А потом по нему получить WindowsPrincipal и проверить роль
https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
После всех действий в WinAPI надо закрыть handle — CloseHandle на safeTokenHandle.
Как-то примерно так
VD>В продукте есть функционал по обновлению стороннего софта. Для большинства обновлений требуются права администратора. В этом случае пользователю выдается стандартный виндовый диалог ввода учетки и пароля.
VD>Стоит задача понять, что пользователь имеет права локального админа (и стало быть способен произвести обновление софта).
VD>Желательно сделать проверку без привлечения лишних (особенно сторонних) либ.
VD>Как проще всего это сделать?
VD>На входе есть имя учетки (включая домен или имя компа) и пароль.
LogonUser взять здесь и получить safeTokenHandle
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsimpersonationcontext?view=netframework-4.8.1&viewFallbackFrom=net-8.0
Потом сделать WindowsIdentity по нему
https://learn.microsoft.com/ru-ru/dotnet/api/system.security.principal.windowsidentity.-ctor?view=net-8.0#system-security-principal-windowsidentity-ctor(system-intptr)
А потом по нему получить WindowsPrincipal и проверить роль
https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
После всех действий в WinAPI надо закрыть handle — CloseHandle на safeTokenHandle.
Как-то примерно так