powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Открываем доступ
3 сообщений из 3, страница 1 из 1
Открываем доступ
    #33396363
hdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hdv
Гость
Пишу программку, которая могла бы открывать доступ к папкам. Посмотрел мсдн. Покумекал и вот что получилось
EXPLICIT_ACCESS ea[2];
PSID pAdminSID = NULL, pEveryoneSID = NULL;
DWORD dwRes;
PACL pACL = NULL;
PSECURITY_DESCRIPTOR pSD = NULL;
SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY;
SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY;


NET_API_STATUS res;
SHARE_INFO_502 p;
DWORD parm_err = 0;


if(!AllocateAndInitializeSid(&SIDAuthWorld, 1,
SECURITY_WORLD_RID,
0, 0, 0, 0, 0, 0, 0,
&pEveryoneSID))
{
printf("AllocateAndInitializeSid Error %u\n", GetLastError());
}

ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS));
ea[0].grfAccessPermissions = GENERIC_READ;
ea[0].grfAccessMode = SET_ACCESS;
ea[0].grfInheritance= NO_INHERITANCE;
ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;
ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
ea[0].Trustee.ptstrName = (LPTSTR) pEveryoneSID;

if(! AllocateAndInitializeSid(&SIDAuthNT, 2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&pAdminSID))
{
printf("AllocateAndInitializeSid Error %u\n", GetLastError());
}

ea[1].grfAccessPermissions = GENERIC_READ;
ea[1].grfAccessMode = SET_ACCESS;
ea[1].grfInheritance= NO_INHERITANCE;
ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID;
ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP;
ea[1].Trustee.ptstrName = (LPTSTR) pAdminSID;

dwRes = SetEntriesInAcl(1, ea, NULL, &pACL);
if (dwRes != ERROR_SUCCESS)
{
printf("SetEntriesInAcl Error %u\n", GetLastError());
}

pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR,
SECURITY_DESCRIPTOR_MIN_LENGTH);
if (pSD == NULL)
{
printf("LocalAlloc Error %u\n", GetLastError());
}

if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION))
{
printf("InitializeSecurityDescriptor Error %u\n",
GetLastError());
}

if (!SetSecurityDescriptorDacl(pSD,
TRUE, // bDaclPresent flag
pACL,
FALSE)) // not a default DACL
{
printf("SetSecurityDescriptorDacl Error %u\n", GetLastError());
}

p.shi502_netname = TEXT("TESTSHARE");
p.shi502_type = STYPE_DISKTREE; // disk drive
p.shi502_remark = TEXT("TESTSHARE to test NetShareAdd");
p.shi502_permissions = ACCESS_ALL;
p.shi502_max_uses = 4;
p.shi502_current_uses = 0;
p.shi502_path = wszPath;
p.shi502_passwd = NULL; // no password
p.shi502_security_descriptor = pSD;

res=NetShareAdd(NULL, 502, (LPBYTE) &p, &parm_err);
Но не получается выставить права доступа к папке. Указяваю, но они не устанавливаются
Подскажите кто знает
...
Рейтинг: 0 / 0
Открываем доступ
    #33398120
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не устанавливаются права которые на шару или которые на папку?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Открываем доступ
    #33401714
hdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hdv
Гость
Да ни те ни те. Разрешения все пустые остаются.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Открываем доступ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]