Я хочу получить имя пользователя процесса и проверить, является ли он локальным администратором. Или проверить непосредственно, если текущий пользователь procees является локальным администраторомПроверьте, является ли пользователь процесса администратором C++
ответ
Предположив вы на ОС Window есть функция оболочки: IsUserAnAdmin
См MSDN article
Эта статья позволяет предположить, прокатке свою собственную функцию хотя, используйте CheckTokenMembership. Существует даже пример кода, который поможет вам.
спасибо! но все, что у меня есть, это зарегистрированный пользователь. Я ищу способ заставить пользователя wjo запускать службу и проверять, является ли это локальным администратором. – sofr
Я не уверен, откуда вы. Но я готов помочь. Мне может помочь еще один пример того, что вы в конечном итоге пытаетесь достичь. Является ли эта услуга тем, что вы написали? Если это так, вы можете применить безопасность во время установки, чтобы разрешить/запретить пользователям (и/или группам) запуск или остановку службы, если это то, что вам нужно? Обычно службы Windows не запускаются как пользователь, который их запускал. По умолчанию системная учетная запись используется как учетная запись, в которой выполняется служба, но это может быть настроено как любой пользователь, которого вы хотите. Затем потоки службы могут выдавать себя за пользователей по своему усмотрению. – MrBry
Я знаю, что это старый ответ, но просто указать, это работает только с Windows Vista, поэтому для окон 7, 8 и 10 эта функция не будет работать. – Alex
Получить текущее имя пользователя с помощью GetUserName(), а затем позвонить NetUserGetInfo() с именем сервера (NULL для местного) и именем пользователя, которое вы только что получили. Передайте ему структуру USER_INFO_1, а затем получите usri1_priv в конструкции. Если значение равно USER_PRIV_ADMIN, вы узнаете, что имя пользователя является администратором.
Протестировано на Windows XP SP3, Windows 7 32-битное и 64-битное с пользователем администратора и не-администратором. Код, перенесенный с эквивалентного C#, и использует классы оболочки безопасности ATL.
#include <atlbase.h>
#include <atlsecurity.h>
// The function returns true if the user who is running the
// application is a member of the Administrators group,
// which does not necessarily mean the process has admin privileges.
bool IsAdministrator(HRESULT &rHr)
{
bool bIsAdmin = false;
try
{
// Open the access token of the current process.
ATL::CAccessToken aToken;
if (!aToken.GetProcessToken(TOKEN_QUERY))
{
throw MAKE_SCODE(SEVERITY_ERROR, FACILITY_WIN32,
::GetLastError());
}
// Query for the access token's group information.
ATL::CTokenGroups groups;
if (!aToken.GetGroups(&groups))
{
throw MAKE_SCODE(SEVERITY_ERROR, FACILITY_WIN32,
::GetLastError());
}
// Iterate through the access token's groups
// looking for a match against the builtin admins group.
ATL::CSid::CSidArray groupSids;
ATL::CAtlArray<DWORD> groupAttribs;
groups.GetSidsAndAttributes(&groupSids, &groupAttribs);
for (UINT i = 0; !bIsAdmin && i < groupSids.GetCount(); ++i)
{
bIsAdmin = groupSids.GetAt(i) == ATL::Sids::Admins();
}
rHr = S_OK;
}
catch (HRESULT hr)
{
rHr = hr;
}
return bIsAdmin;
}
- 1. Проверьте, является ли текущий пользователь администратором
- 2. Проверьте, является ли пользователь администратором в laravel
- 3. Проверьте, является ли пользователь администратором (vb)
- 4. Проверьте, является ли конечный пользователь администратором
- 5. Определить, является ли пользователь администратором
- 6. Проверьте, является ли пользователь локальным администратором на внешнем компьютере
- 7. Проверьте, является ли пользователь администратором при регистрации в
- 8. Как проверить, является ли пользователь администратором?
- 9. Проверка, является ли пользователь администратором или нормальным
- 10. Посмотрите, является ли пользователь администратором Windows 7?
- 11. Meteor Проверить, является ли пользователь администратором
- 12. Проверьте, является ли пользователь root в C?
- 13. Проверьте текущий пользователь является администратором определенной группы Google
- 14. Определить, является ли пользователь администратором Windows 8 с помощью C#
- 15. Проверьте, является ли пользователь root
- 16. Проверьте, является ли пользователь sysop
- 17. Проверьте, является ли пользователь членом
- 18. Проверьте, является ли текущий клиент администратором в Shopify?
- 19. ejabberd: есть ли способ определить, является ли пользователь администратором?
- 20. Проверьте, является ли пользователь членом группы (ldap)
- 21. Java - Проверьте, является ли пользователь доменным доменом Google Apps домена
- 22. Получение страниц, на которых пользователь является администратором
- 23. SQL Query и PHP проверяют, является ли пользователь администратором
- 24. Узнайте, является ли пользователь fb администратором приложения весной social/java
- 25. Проверка, является ли пользователь администратором или нет в PHP
- 26. Как проверить, является ли мой пользователь администратором в рельсах?
- 27. Можно определить, является ли пользователь ОС администратором с помощью апплетов?
- 28. Проверьте, является ли пользователь учетной записью службы
- 29. Проверьте, является ли пользователь Moodle онлайн
- 30. LDAP: Проверьте, является ли пользователь членом группы
Какая операционная система? Вероятно, это имеет значение ... – crashmstr
«Локальный администратор», скорее всего, находится в Windows. – sharptooth
Я бегу - ОС Windows – sofr