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

Получить список пользователей расшареной папки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести все числа массива, сумма цифр которых меньше 10 http://www.cyberforum.ru/cpp-beginners/thread1678401.html
Вывести все числа массива, сумма цифр которых меньше 10 Не могу разобраться как.Помогите)))
C++ Объединить проект в один файл для подключения Всем привет! Не могу решить следующую задачу. У меня есть проект, который отправляет сообщение в твиттер. В этом проекте у меня 5 cpp файлов и 5 хедеров соответственно. Я хочу сделать из этого проекта единую сущность для того, чтобы можно было его подключать к другим проектам и отправлять там сообщения. Каким образом мне можно собрать все эти файлики в такую сущность? Не хочу к каждому проекту,... http://www.cyberforum.ru/cpp-beginners/thread1678390.html
C++ В заданном целочисленном массиве определить количество уникальных элементов
Дан массив a из n целых чисел. Требуется определить количество различных элементов.
Необходимо найти сумму всех элементов, имеющих нечетные индексы C++
Дан массив из n элементов. Необходимо найти сумму всех элементов, имеющих нечетные индексы.
C++ Необходимо найти сумму всех положительных элементов массива или определить, что таких элементов нет http://www.cyberforum.ru/cpp-beginners/thread1678384.html
Дан массив из n элементов. Необходимо найти сумму всех положительных элементов массива или определить, что таких элементов нет. Ноль считать положительным.
C++ Необходимо найти сумму элементов массива с k1-го по k2-й Дан массив из n элементов и числа k1 и k2. Необходимо найти сумму элементов массива с k1-го по k2-й. подробнее

Показать сообщение отдельно
Azamatt
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 10
13.03.2016, 21:52  [ТС]     Получить список пользователей расшареной папки
Посмотрел GetFileSecurity() в msdn, не внесло ясности как использовать, примеров там не было. Поискал в нете, нашел книгу где описывается данная функция, но так и не понял как ее использовать, в примере не понятно было откуда получать результат DACL (книга Александр Побегайло системное программирование в windows). Нашел пример на другом форуме, но там другой функцией получают:

Кликните здесь для просмотра всего текста

не знаю в чем проблема, но такая странность, что если с сервера пытаюсь узнать перечень пользователей компьютера то имя локального пользователя не выводит, пишет unknown. Склоняюсь к тому что в компьютере напортачил с правами(хотя полный доступ). А если наоборот то все нормально выводит.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#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 );
}

Все же, как с помощью функции GetFileSecurity(), получить DACL и SACL. По SACL ни чего не нашел.
Пожалуйста приведите любой пример или ссылку использования данной функции и получения необходимого списка.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru