
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#define _WIN32_WINNT 0x0500
#include <stdio.h>
#include <windows.h>
#include <lm.h>
#include <sddl.h>
int main()
{
int n; // количество относительных идентификаторов учетной записи
LPTSTR lpStringSID = NULL; // указатель на строку с SID
PSID lpSID = NULL; // указатель на SID
LPTSTR lpString; // текущий указатель на SID
printf("Input a number of Sub Authorities: ");
scanf("%d", &n);
lpStringSID = (LPTSTR) new char[10 + 5 * n];
lpStringSID[0] = 'S'; // признак строки SID
lpStringSID[1] = '-';
lpStringSID[2] = '1'; // версия 1
lpStringSID[3] = '-';
// устанавливаем указатель на идентификатор учетной записи
lpString = lpStringSID + 4;
printf("Input an Identifier Authority: ");
scanf("%s", lpString); // вводим идентификатор учетной записи
lpString += strlen(lpString);
*lpString++ = '-';
for (int i = 0; i < n - 1; ++i)
{
printf("Input Sub Authority #%d: ", i);
// вводим относительный идентификатор учетной записи
scanf("%s", lpString);
lpString += strlen(lpString);
*lpString++ = '-';
}
printf("Input Sub Authority #%d: ", n - 1);
// вводим последний относительный идентификатор учетной записи
scanf("%s", lpString);
// распечатываем полученный SID
printf("SID: %s\n", lpStringSID);
// преобразуем строку в SID
if (!ConvertStringSidToSid(lpStringSID, &lpSID))
{
DWORD dwErrCode = GetLastError();
printf("Convert string SID to SID failed.\n");
printf("Last error code: %u\n", dwErrCode);
return dwErrCode;
}
// проверяем SID на достоверность
if(!IsValidSid(lpSID))
{
printf( "The SID is not valid.\n");
return 1;
}
printf("The SID is valid.\n");
// освобождаем память
LocalFree(lpSID);
return 0;
}
Соседние файлы в папке Листинги