Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Vasilisk98
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 6
1

Как проверить с какими правами запущена программа ?

13.06.2016, 23:06. Просмотров 1314. Ответов 2
Метки нет (Все метки)

Как на С проверить с какими правами запущена программа (от имени user или admin )

Если программа запущена от имени user , нужно что - бы у пользователя появлялась желтая табличка "запустите от имени администратора"

Как это сделать ?

Благодарен за любую помощь
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2016, 23:06
Ответы с готовыми решениями:

Как определить, из какого режима запущена программа?
Например есть консольное приложение.Как можно узнать,из какого графического режима оно было...

Запущена ли программа
Я не хочу дать пользователю запустить ещё одну мою программу если она уже запущенна

Узнать запущена ли программа
Нужно узнать, запущен ли какой нибудь процесс. В интернете нашёл вот такой код, но у меня он не...

Как определить с какими правами запущена моя программа
Всем привет. Скажите возможно ли определить с какими правами запущена моя программа ? То есть...

Проверка, с какими правами запущена программа
Возможно ли делать проверку от чего запущена программа если от администратора то все нормально а...

2
schdub
Эксперт С++
3048 / 1390 / 421
Регистрация: 19.01.2009
Сообщений: 3,741
Завершенные тесты: 1
14.06.2016, 02:13 2
Лучший ответ Сообщение было отмечено Vasilisk98 как решение

Решение

Vasilisk98, это делается с помощью манифеста. Укажите requireAdministrator для requestedExecutionLevel:
https://msdn.microsoft.com/en-us/library/bb756929.aspx

Если все же нужно проверить права:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BOOL IsElevated( ) {
    BOOL fRet = FALSE;
    HANDLE hToken = NULL;
    if( OpenProcessToken( GetCurrentProcess( ),TOKEN_QUERY,&hToken ) ) {
        TOKEN_ELEVATION Elevation;
        DWORD cbSize = sizeof( TOKEN_ELEVATION );
        if( GetTokenInformation( hToken, TokenElevation, &Elevation, sizeof( Elevation ), &cbSize ) ) {
            fRet = Elevation.TokenIsElevated;
        }
    }
    if( hToken ) {
        CloseHandle( hToken );
    }
    return fRet;
}
2
Убежденный
Ушел с форума
Эксперт С++
16247 / 7313 / 1183
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
14.06.2016, 14:02 3
Цитата Сообщение от Vasilisk98 Посмотреть сообщение
Как на С проверить с какими правами запущена программа (от имени user или admin )
Если нужна поддержка XP/Server2003, тогда можно CheckTokenMembership,
проверяя наличие в токене процесса группы "Администраторы" (S-1-5-32-544).
Пример из MSDN:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
BOOL IsUserAdmin(VOID)
/*++ 
Routine Description: This routine returns TRUE if the caller's
process is a member of the Administrators local group. Caller is NOT
expected to be impersonating anyone and is expected to be able to
open its own process and process token. 
Arguments: None. 
Return Value: 
   TRUE - Caller has Administrators local group. 
   FALSE - Caller does not have Administrators local group. --
*/ 
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup; 
b = AllocateAndInitializeSid(
    &NtAuthority,
    2,
    SECURITY_BUILTIN_DOMAIN_RID,
    DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0,
    &AdministratorsGroup); 
if(b) 
{
    if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) 
    {
         b = FALSE;
    } 
    FreeSid(AdministratorsGroup); 
}
 
return(b);
}
3
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2016, 14:02

Как определить с какими параметрами запущена программа
Всем привет! Сабж. Каким методом можно определить с какими параметрами запущена программа, и...

Как проверить, запущена ли заданная программа
Помогите сделать программу каторая все время будет проверять включена ли программа каторая задана...

Как проверить, что программа запущена (избежать повторного запуска)?
Знаю, что можно с помощью FindWindow, но вдруг FindWindow найдет просто другую программу с похожим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.