UAC или привилегии юзера

Простейшие вопросы в области инженерной разработки

UAC или привилегии юзера

Postby jane_wild on 14 Nov 2017, 22:55

Собственно вопрос прост до безобразия. Суть вот в чем. Как узнать с какими привилегиями запущена xxx*exe программа? Идея такая: Если юзер залогинился в Windows как администратор, то активировать кнопку входа в меню конфигурации, если как простой пользователь, то disable (либо вообще спрятать) кнопочку. Нечего ему там делать. :wink: Видела такое на .NET
User avatar
jane_wild
beginner
beginner
 
Posts: 49
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2013
Karma: 0

Re: UAC или привилегии юзера

Postby Vitekkz88 on 15 Nov 2017, 05:25

jane_wild, про API-шную функцию такого плана не знаю. Знаю, что можно получить список имён учетных записей и текущую учетную запись с помощью API-шной функции. Но хард-код Вас вряд ли заинтересует. Поменяли имя админской записи - придётся менять условие проверки по имени.
Можно попробовать средствами LabVIEW это сделать. Например создать папку и настроить права таким образом, чтоб записывать туда мог только пользователь с правами администратора. Если при попытке записи получаем ошибку - значит у пользователя недостаточно привилегий для записи файла в указанную папку.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: UAC или привилегии юзера

Postby Artem.spb on 15 Nov 2017, 09:11

Если заморочиться с парсингом, то так:
admin.png

из недосттатков: надо отслеживать язык. На русской винде вместо admin.. будет админ...
но если приложение для одного компа, то какая разница.
Artem.spb
expert
expert
 
Posts: 1221
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 214
CLD hardware I/O VIP freelance

Re: UAC или привилегии юзера

Postby ladik on 15 Nov 2017, 12:03

Попробуйте так:
Example.png
LV2011 Example

WHOAMI - Displays user, group and privileges information for the user who is currently logged on to the local system. [1]

SID S-1-5-32-544 сообщает о том, что пользователь состоит в группе "Администраторы". [2]

1. https://technet.microsoft.com/ru-ru/library/cc771299(v=ws.10).aspx
2. https://support.microsoft.com/ru-ru/help/243330/well-known-security-identifiers-in-windows-operating-systems
Attachments
CmdResult.PNG
Администратор
Снимок.PNG
Обычный пользователь
User avatar
ladik
advanced
advanced
 
Posts: 185
Joined: 18 Nov 2014, 11:45
Location: Астана
Medals: 1
Silver (1)
LabVIEW Version: 2011, 2015
Karma: 67
hardware I/O VIP

Re: UAC или привилегии юзера

Postby dadreamer on 15 Nov 2017, 14:56

Способы, работающие через WinAPI:
1. IsUserAnAdmin - простейшая функция; считается устаревшей, но до сих пор работает.
2. GetTokenInformation: https://stackoverflow.com/questions/804 ... ive-rights
3. CheckTokenMembership: http://www.cyberforum.ru/win-api/thread1981756.html
4. есть и другие, но мне уже лень гуглить :wink:
User avatar
dadreamer
doctor
doctor
 
Posts: 2896
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

Re: UAC или привилегии юзера

Postby jane_wild on 16 Nov 2017, 00:08

Выбрала этот вариант. Работает замечательно.
ladik wrote:Попробуйте так:
The attachment Example.png is no longer available

WHOAMI - Displays user, group and privileges information for the user who is currently logged on to the local system. [1]

SID S-1-5-32-544 сообщает о том, что пользователь состоит в группе "Администраторы". [2]

1. https://technet.microsoft.com/ru-ru/library/cc771299(v=ws.10).aspx
2. https://support.microsoft.com/ru-ru/help/243330/well-known-security-identifiers-in-windows-operating-systems


Сначала хотела использовать IsUserAnAdmin не получилось. Видимо что то не так делала. Для Call Library Function Node указала путь C:\Windows\System32 Далее выбрала упомянутую функцию, указала возвращаемый параметр как Signed 32-bit Integer (boolean там нет :) )
Shell32.png

Ну и после вызова проверяла на "больше чем ноль" В скомпилированом файле возвращает всегда false.
Admin.png
Admin.png (2.51 KiB) Viewed 228 times
User avatar
jane_wild
beginner
beginner
 
Posts: 49
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2013
Karma: 0

Re: UAC или привилегии юзера

Postby Vitekkz88 on 16 Nov 2017, 05:20

jane_wild, а вы попробуйте LabVIEW запускать в явном виде от имени администратора. ПКМ - > запуск от имени администратора.
Скорее всего политика безопасности на Вашем ПК настроена не так,как Вам требуется. А почему не использовать вариант с WHOAMI? У меня сработало нормально. Правда я не знаю, всегда ли SID группы администраторов является постоянным на разных семействах Windows. Я, например, на Win 10 проверял и всё гут :crazy:
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: UAC или привилегии юзера

Postby ladik on 16 Nov 2017, 09:31

Vitekkz88, вот что говорит Microsoft:
Applies To: Windows Server 2003, Windows Vista, Windows XP, Windows Server 2008, Windows 7, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2000, Windows Server 2012, Windows 8.

https://technet.microsoft.com/ru-ru/library/cc771299(v=ws.11).aspx.

Плюс на Win10 Вы уже проверили.
User avatar
ladik
advanced
advanced
 
Posts: 185
Joined: 18 Nov 2014, 11:45
Location: Астана
Medals: 1
Silver (1)
LabVIEW Version: 2011, 2015
Karma: 67
hardware I/O VIP

Re: UAC или привилегии юзера

Postby Vitekkz88 on 16 Nov 2017, 10:04

ladik, ну и замечательно! :super: Я бы этот метод и использовал. Вполне себе годная реализация. Куда проще, чем с созданием файла в админской папке. И куда приятней, нежели чем капашиться в .dll .
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: UAC или привилегии юзера

Postby dadreamer on 16 Nov 2017, 13:12

jane_wild wrote:Для Call Library Function Node указала путь C:\Windows\System32

Для системных библиотек не нужно указывать полный путь. Нужно просто ввести shell32.dll, :labview: сам найдёт указанную библиотеку.
jane_wild wrote:Далее выбрала упомянутую функцию, указала возвращаемый параметр как Signed 32-bit Integer (boolean там нет :) )

Это верно. Только CLFN должен быть жёлтого цвета (Run in any thread).
jane_wild wrote:Ну и после вызова проверяла на "больше чем ноль" В скомпилированом файле возвращает всегда false.

Если у вас включен UAC, то нужно явно повышать привилегии пользователя, даже если он состоит в группе "Администраторы". Нажмите ПКМ -> Запуск от имени администратора. Если же UAC в режиме "никогда не уведомлять", но стоит политика на одобрение администратором (по умолчанию активирована), то экзешник всегда будет запускаться с пониженными правами, даже если выберете запуск от администратора. Чтобы экзешник по умолчанию запускался с повышенными правами (elevated), нужно кроме UAC отключить и вот эту опцию: Пуск -> Выполнить -> gpedit.msc -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Параметры безопасности -> Контроль учётных записей: все администраторы работают в режиме одобрения администратором (выставить в "Отключен" и перезагрузить компьютер).
Примечание: начиная с Windows 8.1 эта политика не отключается автоматом при переводе UAC в режим "никогда не уведомлять", то есть, её нужно отключать вручную.
Хотя, конечно, нужно понимать, что работа из-под полноценного администратора небезопасна, поскольку всем приложениям разрешён полный доступ к системе.

В общем, следуя вышеописанной логике функция IsUserAnAdmin работает исправно (проверил на Win 8.1, думаю, на 10-ке будет то же самое).

Кстати говоря, можно сделать так, чтобы экзешник всегда просил elevation (запрос на повышение прав). Для этого в :labview: в параметрах билда нужно импортировать вот такой манифест:
Code: Select all
<?xml version="1.0" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity version="1.1.1.1" processorArchitecture="*" name="Здесь_имя_вашей_программы.exe" type="win32"/>
   <description>elevate execution level</description>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
         </requestedPrivileges>
      </security>
   </trustInfo>
</assembly>

Vitekkz88 wrote:И куда приятней, нежели чем капашиться в .dll .

Там же ничего сложного, тем более для продвинутого пользователя :labview: :wink: Зато работает побыстрее прочих методов. Хотя в конкретном случае скорость не важна. Но всё же.
User avatar
dadreamer
doctor
doctor
 
Posts: 2896
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

Re: UAC или привилегии юзера

Postby Vitekkz88 on 16 Nov 2017, 15:15

dadreamer, та я понимаю. На десятке всё работает, кстати. Запустил из админки и получил единичку с выхода функции. Запустил с ограниченными правами, нолик получил. Но чтоб получить 1 делал как раз выше описанные манипуляции, воооот:-)
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: UAC или привилегии юзера

Postby dadreamer on 16 Nov 2017, 15:46

Vitekkz88, я это к чему всё написал - просто тот путь, что выбрала jane_wild, получается маленько "в обход" политик винды. Не зря же все проги запускаются с минимумом прав. Тогда смысл вообще привязывать ту кнопку к группе, куда относится текущий юзер?.. Логичнее тогда сделать отдельный механизм авторизации.

Ну и до кучи, способ с анализом группы не сработает, когда юзер запустит экзешник в elevated-режиме (мало ли, админ позволит или ещё что).
User avatar
dadreamer
doctor
doctor
 
Posts: 2896
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

Re: UAC или привилегии юзера

Postby Vitekkz88 on 16 Nov 2017, 17:22

dadreamer, кстати да, вот на счёт запуска исполняемого файла верно замечено. Надо проверить, как себя это ведёт, я не пробовал. Однако в своё время на славу мозг парил как убрать сообщение, которое появляется когда запускаешь от имени администратора(через свойства ставил запуск от имени админа, затем по двойному клику запускаешь прогу и сообщение типа. Данная программа может или хочет и т.д.)
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP


Return to Для чайников

Who is online

Users browsing this forum: Google and 15 guests

cron