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

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

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

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

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

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

Благодарен за любую помощь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2016, 23:06
Ответы с готовыми решениями:

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

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

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

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

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

Решение

Vasilisk98, это делается с помощью манифеста. Укажите requireAdministrator для requestedExecutionLevel:
https://msdn.microsoft.com/en-... 56929.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
Ушел с форума
Эксперт С++
16407 / 7382 / 1184
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2016, 14:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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