Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <stdio.h>
#include <windows.h>
int main()
{
int n; // количество идентификаторов
// указатель на идентификатор учетной записи
SID_IDENTIFIER_AUTHORITY *sia;
DWORD dwSubAuthority; // относительный идентификатор учетной записи
PSID pSid = NULL; // указатель на SID
// предопределенные идентификаторы учетной записи
SID_IDENTIFIER_AUTHORITY s0 = SECURITY_NULL_SID_AUTHORITY;
SID_IDENTIFIER_AUTHORITY s1 = SECURITY_WORLD_SID_AUTHORITY;
SID_IDENTIFIER_AUTHORITY s2 = SECURITY_LOCAL_SID_AUTHORITY;
SID_IDENTIFIER_AUTHORITY s5 = SECURITY_NT_AUTHORITY;
// ввод идентификатора безопасности
printf("Choose one of the predefined SID.\n");
printf("Null SID:\t\t0\n");
printf("World SID:\t\t1\n");
printf("Local SID:\t\t2\n");
printf("Anonimous logon SID:\t5\n\n");
printf("SID = ");
scanf("%d", &n); // читаем идентификатор учетной записи
switch (n)
{
case 0:
sia = &s0;
dwSubAuthority = SECURITY_NULL_RID;
break;
case 1:
sia = &s1;
dwSubAuthority = SECURITY_NULL_RID;
break;
case 2:
sia = &s2;
dwSubAuthority = SECURITY_NULL_RID;
break;
case 5:
sia = &s5;
dwSubAuthority = SECURITY_NULL_RID;
break;
default:
printf("Unknown uiniversal SID.\n");
return 1;
}
// создаем SID
if(!AllocateAndInitializeSid(
sia, // идентификатор учетной записи
1, // количество относительных идентификаторов учетной записи
dwSubAuthority, // первый RID
0, 0, 0, 0, 0, 0, 0, // остальные RID равны 0
&pSid) )
{
DWORD dwRetCode = GetLastError();
printf( "Allocate and initialize sid failed %u\n", dwRetCode);
return dwRetCode;
}
printf("The SID is allocated and initialized.\n");
// освобождаем SID
FreeSid(pSid);
printf("The SID is freed.\n");
return 0;
}
Соседние файлы в папке Листинги