Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4

Ошибка 87 из функций LsaOpenPolicy и LsaEnumerateAccountRights

24.12.2022, 16:18. Показов 4688. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Код пишу так.
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
#define en endl
//в main
DWORD  bufCharCount=1000;
WCHAR ComputerName[1000];
cout<<"Получение имени пользователя "<<GetUserNameW(ComputerName,&bufCharCount)<<en;
cout<<"размер имени пользователя "<<bufCharCount<<" имя пользователя ";wprintf(ComputerName);cout<<en;
cout<<"Получение имени ПК "<<GetComputerNameW(ComputerName,&(bufCharCount=1000))<<en;
cout<<"размер имени ПК "<<bufCharCount<<" имя ПК ";wprintf(ComputerName);cout<<en;
 
cout<<GetLastError()<<en;
NTSTATUS Descriptor=0;
LSA_UNICODE_STRING LSA_STRING;LSA_STRING.Length=bufCharCount*sizeof(WCHAR);
LSA_STRING.MaximumLength=(bufCharCount+1)*sizeof(WCHAR);
LSA_STRING.Buffer=ComputerName;
LSA_OBJECT_ATTRIBUTES OBJECT_ATTRIBUTES={};
LSA_HANDLE hPolicy=0;
NTSTATUS stat=
LsaOpenPolicy(&LSA_STRING,&OBJECT_ATTRIBUTES,POLICY_LOOKUP_NAMES,&hPolicy);
cout<<GetLastError()<<en;//STATUS_SUCCESS
 
ULONG err=LsaNtStatusToWinError(stat);
cout<<"LsaOpenPolicy err "<<err<<" "<<(int)hPolicy<<en;
#define SID_DEF_SIZE 28
DWORD cbSID = SID_DEF_SIZE;
DWORD *SID =new DWORD [cbSID];
 
PLSA_UNICODE_STRING pPrivs;ULONG CountOfRights=0;
 
stat=LsaEnumerateAccountRights(hPolicy,SID,&pPrivs,&CountOfRights);
cout<<"LsaEnumerateAccountRights GetLastError "<<GetLastError()<<en;
err=LsaNtStatusToWinError(stat);
cout<<"err "<<err<<" "<<stat<<en;
из ошибок https://learn.microsoft.com/en... urn-values работают эти
C++
1
2
3
4
5
6
7
8
9
10
cout<<"ERROR_ACCESS_DENIED " <<ERROR_ACCESS_DENIED<<
" ERROR_NO_SYSTEM_RESOURCES "<<ERROR_NO_SYSTEM_RESOURCES<<
" ERROR_INTERNAL_DB_ERROR "<<ERROR_INTERNAL_DB_ERROR<<
" STATUS_INVALID_HANDLE "<<STATUS_INVALID_HANDLE<<
" ERROR_INVALID_SERVER_STATE "<<ERROR_INVALID_SERVER_STATE<<
" STATUS_INVALID_PARAMETER "<<STATUS_INVALID_PARAMETER<<
" ERROR_INVALID_PARAMETER "<<ERROR_INVALID_PARAMETER<<
" ERROR_NO_SUCH_PRIVILEGE "<<ERROR_NO_SUCH_PRIVILEGE<<
" ERROR_FILE_NOT_FOUND "<<ERROR_FILE_NOT_FOUND<<
" ERROR_GEN_FAILURE "<<ERROR_GEN_FAILURE<<en;
Остальные не работают. А первый блок вообще не подсвечивается не знаю какой-там заголовочный файл.
Результаты такие.
C++
1
2
3
4
5
6
7
8
9
Получение имени пользователя 1
размер имени пользователя 5 имя пользователя user
Получение имени ПК 1
размер имени ПК 15 имя ПК WIN-JHI7LTSO7D9
203
0
LsaOpenPolicy err 0 7859520
LsaEnumerateAccountRights GetLastError 0
err 87 -1073741811
. Последнего отрицательного значения в ошибках нет. Что я не правильно записал?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2022, 16:18
Ответы с готовыми решениями:

Ошибка в шаблоне функций
Вот код: #include &lt;iostream&gt; using namespace std; template &lt;class A&gt; // øàáëîí ôóíêöèè A ads (A n) { return (n&lt;0) ? -n:...

ошибка в шаблонах функций
Есть у меня программа из нескольких файлов . с шаблонами для функций ... компилятор выдает следующий ошибку -&gt; &quot;/main.cpp:17:...

Yii2 Ошибка с функций Yii:t()
Здравствуйте,у меня пишет вот такую ошибка? Invalid Configuration An internal server error occurred. The above error occurred...

32
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
27.12.2022, 18:41
Студворк — интернет-сервис помощи студентам
Администратор должен заранее позаботиться о привилегиях пользователей, от имени которых выполняются прикладные программы, утилиты и сервисы системы.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
27.12.2022, 19:11  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Администратор должен заранее позаботиться о привилегиях пользователей, от имени которых выполняются прикладные программы, утилиты и сервисы системы.
Вы вокруг да около ходите. Скажите пожалуйста, какая разница между привилегиями Lsa*** и привилегиями процесса? По сути Lsa*** назначают привилегии учётной записи, а учётная запись выше процесса и по идее исходя привилигий учётной записи можно автоматически назначить привилегии процессу или нет? Можете точно сказать можно ли изменить привилегии процесса, и сколько этих привилегий назначается системой от имени пользователя? Что касаемо администратора то возникает вопрос кто являет администратором учётной записи, пользователь или нет или система?
Судя по тем темам что мне писали ранее, привилегии назначаются системой автоматически. А с чего исходит система или учётная запись, они же ориентируются какой уровень доступа предостовлять а какой нет.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
27.12.2022, 19:50
Система руководствуется правилами, которые хранятся в базе LSA.(но не только ими) Функциями можно изменять эти правила.
Например членам "Группы тестирования" предоставить привилегию SeDebugPrivilege.

Когда любой пользователь этой группы войдёт в систему, система создаст Token, в котором эта привилегия будет доступна. Он будет Tokenом первого процесса, выполняющегося от имени этого пользователя. Все остальные запущенные пользователем программы: Проводник, отладчики и т.д. унаследуют этот Token вместе с привилегией. Т.о. программы-отладчики при необходимости смогут воспользоваться привилегией с помощью AdjustTokenPrivileges().

https://learn.microsoft.com/en... ges-in-c--

Добавлено через 5 минут
Цитата Сообщение от Nexi99 Посмотреть сообщение
кто являет администратором
Пользователь, у которого достаточно прав, чтобы поменять привилегии и права пользователей в secpol.msc или gpedit.msc
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
27.12.2022, 21:23  [ТС]
Значит функции
Цитата Сообщение от politoto Посмотреть сообщение
LSA
имеют самый высокий приоритет, и они назначают базовые права учётной записи, а учётная запись назначает привилегии процессам, т.е. формирует токен-контекст безопасности?
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
29.12.2022, 08:55
Windows Batch file
1
whoami /priv /user
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Сведения о пользователе
----------------
Пользователь        SID
=================== ============================================
7fb9a10a-71aa-4\tet S-1-5-21-2047949552-857980807-821054962-1000
 
Сведения о привилегиях
----------------------
Имя привилегии                Описание                                   Область, край
============================= ========================================== =============
SeShutdownPrivilege           Завершение работы системы                  Отключен
SeChangeNotifyPrivilege       Обход перекрестной проверки                включен
SeUndockPrivilege             Отключение компьютера от стыковочного узла Отключен
SeIncreaseWorkingSetPrivilege Увеличение рабочего набора процесса        Отключен
SeTimeZonePrivilege           Изменение часового пояса                   Отключен
Windows Batch file
1
whoami /priv /user
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Сведения о пользователе
----------------
Пользователь        SID
=================== ============================================
7fb9a10a-71aa-4\tet S-1-5-21-2047949552-857980807-821054962-1000
 
Сведения о привилегиях
----------------------
Имя привилегии                Описание                                   Область, край
============================= ========================================== =============
SeLockMemoryPrivilege         Блокировка страниц в памяти                Отключен
SeShutdownPrivilege           Завершение работы системы                  Отключен
SeChangeNotifyPrivilege       Обход перекрестной проверки                включен
SeUndockPrivilege             Отключение компьютера от стыковочного узла Отключен
SeIncreaseWorkingSetPrivilege Увеличение рабочего набора процесса        Отключен
SeTimeZonePrivilege           Изменение часового пояса                   Отключен
Одна и та же программа, запущенная от имени одного и того же пользователя в одно и то же время в двух различных окнах.
В одном привилегия SeLockMemoryPrivilege ( Блокировка страниц в памяти ) доступна программе, а в другом - нет.

Оба сеанса были начаты командой runas /user:tet cmd, но один, когда привилегия не была назначена политикой для учётной записи tet, а другой - когда привилегия была назначена.

Добавлено через 12 минут
Теперь админ удаляет учётную запись пользователя.
net user tet /delete
Code
1
The command completed successfully.
Но привилегия при нём:
Windows Batch file
1
whoami /user /priv
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Сведения о пользователе
----------------
Пользователь        SID
=================== ============================================
7fb9a10a-71aa-4\tet S-1-5-21-2047949552-857980807-821054962-1000
 
Сведения о привилегиях
----------------------
Имя привилегии                Описание                                   Область, край
============================= ========================================== =============
SeLockMemoryPrivilege         Блокировка страниц в памяти                Отключен
SeShutdownPrivilege           Завершение работы системы                  Отключен
SeChangeNotifyPrivilege       Обход перекрестной проверки                включен
SeUndockPrivilege             Отключение компьютера от стыковочного узла Отключен
SeIncreaseWorkingSetPrivilege Увеличение рабочего набора процесса        Отключен
SeTimeZonePrivilege           Изменение часового пояса                   Отключен
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
29.12.2022, 21:20  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
не была назначена политикой для учётной записи tet, а другой - когда привилегия была назначена.
Так от чего зависит список привилегий процесса, они формируется от привилегий учётной записи или от чего?
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
30.12.2022, 09:34
Так от того и зависит, какие есть привилегии в token, который назначен процессу при его создании, и от того, что процесс дальше с ним делал.

Если процесс создан с помощью CreateProcess(), то список привилегий неявно наследуется от того процесса, который выполнил CreateProcess().
https://learn.microsoft.com/ru... -processes

Если явно указали token при создании процесса с помощью CreateProcessAsUserW() или CreateProcessWithTokenW(), то будет использоваться список привилегий из этого token.
https://learn.microsoft.com/en... essasuserw

https://learn.microsoft.com/en... withtokenw

Если процесс создали функцией CreateProcessWithLogonW(), то система создаёт новый token для этого процесса, используя данные имя пользователя, домен и пароль.

https://learn.microsoft.com/en... withlogonw

https://learn.microsoft.com/en... trol-works
Миниатюры
Ошибка 87 из функций LsaOpenPolicy и LsaEnumerateAccountRights  
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
30.12.2022, 19:17  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Так от того и зависит, какие есть привилегии в token
Дело в том что он тоже формируется исходя из каких-то принципов. Привилегии токена формирует система, и тут возникает вопрос а как регулировать привилегии системы т.е. сказать ей чтобы она дала больше привилегий токену. Потому что если в токене привилегий нет или их мало и процесс который вы запустили ограничен то возникает вопрос как наделить этот токен более широкими возможностями, потомчто если привилегии нет в токене то добавить её нельзя её можно только включить если она есть или выключить. Я проверял Lsa включают привилегии, правда я не знаю или все. Значит Lsa имеют наивысший приоритет или нет?

Добавлено через 3 минуты
Цитата Сообщение от politoto Посмотреть сообщение
CreateProcessWithLogonW()
запускает указанный исполняемый файл в контексте безопасности с указанными учетными данными (пользователь, домен и пароль).
Что это значит фиг его знает.
0
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
31.12.2022, 16:31
Цитата Сообщение от Nexi99 Посмотреть сообщение
Ребята не обижайтесь давайте вы каждому 1ому будете предлагать книгу читать.
Ну мы тоже не можем пересказывать книгу в каждом посте. Тем более winsec, который тянет на добрые 500 страниц.
Цитата Сообщение от Nexi99 Посмотреть сообщение
Так от чего зависит список привилегий процесса
Зависит от токена , с которым будет создан процесс (по дефолту - от токена текущего юзера).
Цитата Сообщение от Nexi99 Посмотреть сообщение
запускает указанный исполняемый файл в контексте безопасности с указанными учетными данными (пользователь, домен и пароль).
Что это значит фиг его знает.
в чем проблема создать процесс 1, 2, 3, и глянуть какие там токены, какие привилегии? Я так учился.
0
419 / 311 / 107
Регистрация: 30.08.2022
Сообщений: 1,195
31.12.2022, 16:35
Цитата Сообщение от Morgot Посмотреть сообщение
который тянет на добрые 500 страниц
По мнению ТС мы должны всё сократить до 10 строк
Цитата Сообщение от Morgot Посмотреть сообщение
Я так учился
Эт вы. А он и не собирается
1
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
01.01.2023, 01:02  [ТС]
Цитата Сообщение от Morgot Посмотреть сообщение
Зависит от токена , с которым будет создан процесс (по дефолту - от токена текущего юзера).
Если юзер ничего не регулирует то и дочерние и выполняющиеся процессы будут иметь одинаковые привилегии. А если Lsa и регулируют базовый токен то это хорошо значит можно назначать привилегии и снимать их. Единственное насколько это надёжно в других ОС, т.к. разработчики постоянно пичкают безопасностью что в целом никакой пользы не приносит а программирование осложняет.
Цитата Сообщение от Morgot Посмотреть сообщение
в чем проблема создать процесс 1, 2, 3, и глянуть какие там токены, какие привилегии? Я так учился.
Я так в основном тоже делаю но конечно узнать о живом опыте от пользователей мне было бы легче и надёжнее.
0
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
03.01.2023, 19:38
Цитата Сообщение от Nexi99 Посмотреть сообщение
можно назначать привилегии и снимать их.
так это нужен все равно логофф/ребут,чтобы действия вступили в силу.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
08.01.2023, 20:10
Цитата Сообщение от politoto Посмотреть сообщение
whoami /user /priv
Code
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
nt authority\система S-1-5-18
 
Имя привилегии                            Описание                                                               Область, край
========================================= ====================================================================== =============
SeAssignPrimaryTokenPrivilege             Замена маркера уровня процесса                                         Отключен     
SeLockMemoryPrivilege                     Блокировка страниц в памяти                                            включен      
SeIncreaseQuotaPrivilege                  Настройка квот памяти для процесса                                     Отключен     
SeTcbPrivilege                            Работа в режиме операционной системы                                   включен      
SeSecurityPrivilege                       Управление аудитом и журналом безопасности                             Отключен     
SeTakeOwnershipPrivilege                  Смена владельцев файлов и других объектов                              Отключен     
SeLoadDriverPrivilege                     Загрузка и выгрузка драйверов устройств                                Отключен     
SeSystemProfilePrivilege                  Профилирование производительности системы                              включен      
SeSystemtimePrivilege                     Изменение системного времени                                           Отключен     
SeProfileSingleProcessPrivilege           Профилирование одного процесса                                         включен      
SeIncreaseBasePriorityPrivilege           Увеличение приоритета выполнения                                       включен      
SeCreatePagefilePrivilege                 Создание файла подкачки                                                включен      
SeCreatePermanentPrivilege                Создание постоянных общих объектов                                     включен      
SeBackupPrivilege                         Архивация файлов и каталогов                                           Отключен     
SeRestorePrivilege                        Восстановление файлов и каталогов                                      Отключен     
SeShutdownPrivilege                       Завершение работы системы                                              Отключен     
SeDebugPrivilege                          Отладка программ                                                       включен      
SeAuditPrivilege                          Создание аудитов безопасности                                          включен      
SeSystemEnvironmentPrivilege              Изменение параметров среды изготовителя                                Отключен     
SeChangeNotifyPrivilege                   Обход перекрестной проверки                                            включен      
SeUndockPrivilege                         Отключение компьютера от стыковочного узла                             Отключен     
SeManageVolumePrivilege                   Выполнение задач по обслуживанию томов                                 Отключен     
SeImpersonatePrivilege                    Имитация клиента после проверки подлинности                            включен      
SeCreateGlobalPrivilege                   Создание глобальных объектов                                           включен      
SeIncreaseWorkingSetPrivilege             Увеличение рабочего набора процесса                                    включен      
SeTimeZonePrivilege                       Изменение часового пояса                                               включен      
SeCreateSymbolicLinkPrivilege             Создание символических ссылок                                          включен      
SeDelegateSessionUserImpersonatePrivilege Получить маркер олицетворения для другого пользователя в том же сеансе включен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.01.2023, 20:10

Ошибка в программе с использованием функций
#include &lt;stdio.h&gt;//подключение #include &lt;conio.h&gt;//необходимых #include &lt;locale&gt;//библиотек #include &lt;time.h&gt; void...

Где ошибка в вызове функций
Здравствуйте! Учусь работать с html и javascript, получила задание. Для решения поставленных задач нашла несколько функций javascript...

Ошибка при перегрузке функций
Помогите, пожалуйста. Вылетает ошибка floating point stack check на строчке 16 кода (код ниже). Summa.Real=a.Real+b.Real; Не могу понять,...

Ошибка при использовании функций
Здравствуйте! Есть код, в котором значения теплопроводности, теплоемкости и плотности заданы функциями: clc, clear all lmd_fld...

Ошибка функций ввода/вывода
Задача такая. 1 число генерирует программа, 2-ое вводит пользователь. функция main генерит число и запускает функцию ввода 2-ого числа....


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru