Форум программистов, компьютерный форум CyberForum.ru

Получить список пользователей из <разрешения для общего доступа> - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Псевдо графический рисунок http://www.cyberforum.ru/cpp-beginners/thread1720946.html
нужно нарисовать рисунок, верхний я как-то сделал, а вот с другими проблемма. Хелп плиз. for(int i=-3;i<=5;i++) { for (int j=-33;j<=((7-(2*i-1))/2);j++) st+=' '; for(int j=-8;j<=(2*i-1);j++) st+=s.at(a++); st+="\r\n"; } for( int i=-6;i<=0;i++)
C++ Задача на перегрузку операторов Нужно перегрузить +, - , = ,* для моего класса. #include<iostream> using namespace std; class A { int* p; int size; public: http://www.cyberforum.ru/cpp-beginners/thread1720932.html
C++ Сформировать вектор по заданному правилу
Даны натуральное число n и действительные числа y1 y2…yn. Получить вектор Z (Z1, Z2…Zn), Компонента Zi равняется: yi, если 0 < yi < 10; в противном случае 0 < Zi < 10; Решение получить в виде массивов. У меня что то пошло не так. #include<math.h> #include<stdio.h>
C++ Сформировать массив из элементов в седловых точках матриц
Сформировать массив из элементов в седловых точках матриц. В седловой точке элемент является минимальным в строке и максимальным в столбце.
C++ Добавить элементы в начало главного списка http://www.cyberforum.ru/cpp-beginners/thread1720878.html
Функция void AddHead(const List *l1) должна добавлять элементы l1 в голову главного списка. Первое добавление проходит нормально, второе добавление этих же элементов происходит некорректно, ибо я замыкаю список. Можно как-то пофиксить функцию или нужен другой подход? List.h #pragma once #include <string.h> #include <stdio.h> struct ListNode { const char *str;
C++ Накопление списков объектов ситуёвина следующая имею класс blok blok.hpp class blok() { public: blok(); ~blok(); void SetPower(double power); double GetPower(); подробнее

Показать сообщение отдельно
Azamatt
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 10
26.04.2016, 20:50  [ТС]     Получить список пользователей из <разрешения для общего доступа>
Получается в маске которая находится DACL-е, и хранится все права которые даны пользователю, разрешенному выполнять действия с объектом?
Если так то у Побегайло описаны права находящиеся в маске, которые может иметь пользователь. Не понимаю только как узнать по маске какие права, если они в битовой форме. В книге описаны какой диапазон битов какие группы прав хранит.
В Побегайло описаны как праметры выводить только все в разброс.

нашел код в просторах интернета, выводит некоторые данные DACL, в том числе маску, маска выводится набором цифр, загуглил цифры, некоторые нашел, они характеризовали группу безопасности(пользователи, администратор и т.д.). Не увидел в выведенном списке пользователей, которые видны в "разрешения для общего доступа".
То нашел? можно этот код как пример использовать или он есть мое решение, но из-за не знания как его использовать не получается вывести необходимое?
функции используемые в примере посмотрел в книге Побегайло.
Кликните здесь для просмотра всего текста

#include <iostream>
#include <iomanip>

#include <windows.h>
#include <aclapi.h>

using namespace std;

void finish( int error )
{
if (error) exit( EXIT_FAILURE );
else exit( EXIT_SUCCESS );
}

int main( int argc, char* argv[] )
{
/* File/Directory name is passed as a first parameter */
if (argc < 2) {
cout << "object names is not specified" << endl;
finish( 1 );
}

PSECURITY_DESCRIPTOR pSD;
PACL pDACL;
ACL_SIZE_INFORMATION aclSize;
DWORD result;

// Get DACL for the specified named object.
result = GetNamedSecurityInfo( argv[1], SE_FILE_OBJECT,
DACL_SECURITY_INFORMATION,
NULL, NULL, &pDACL, NULL, &pSD );
if(ERROR_SUCCESS != result) {
cout << "GetNamedSecurityInfo failed (" << result << ")" << endl;
finish( 1 );
}

// Permissions are not specified (you have FAT ;-))
if (NULL == pDACL) {
cout << argv[1] << " has no DACL" << endl;
finish( 0 );
}

// Here we have valid DACL with a list of ACEs (with SIDs).
// Let's get number of ACEs.
if(!GetAclInformation( pDACL, &aclSize, sizeof(aclSize), AclSizeInformation )) {
cout << "GetAclInformation failed (" << GetLastError() << ")" << endl;
finish( 1 );
}

// Walk through ACEs and display information about each entry
for ( DWORD ace_idx = 0; ace_idx < aclSize.AceCount; ace_idx++) {
ACCESS_ALLOWED_ACE* pACE;

if (GetAce( pDACL, ace_idx, (PVOID*)&pACE )) {
char user[256] = "";
char domain[256] = "";
DWORD user_len = sizeof(user);
DWORD domain_len = sizeof(domain);
SID_NAME_USE sid_name_use;
PSID pSID =(PSID)(&(pACE->SidStart));

// Take SID from ACE and get accoount name
cout << setw(3) << ace_idx << ") ";
if (LookupAccountSid( NULL, pSID, user, &user_len,
domain, &domain_len, &sid_name_use)){
cout << domain << "" << user;
}
else {
cout << "unknown";
}

// Display ACE type
switch (pACE->Header.AceType) {
case ACCESS_ALLOWED_ACE_TYPE:
cout << " allowed";
break;
case ACCESS_DENIED_ACE_TYPE:
cout << " denied";
break;
default:
cout << " audit"; // in fact, never happens in this example
}

// Display access MASK
cout << " mask " << pACE->Mask << endl;
}
else {
cout << "GetAce failed at index " << ace_idx << endl;
}

}
finish( 0 );
}
 
Текущее время: 21:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru