Я пытаюсь использовать функцию ConvertSidToStringSid() в проекте консоли Visual Studio 2015 Community.visual studio 2015 C++ sddl.h не отображается как внешняя зависимость
Согласно странице MSDN
https://msdn.microsoft.com/en-us/library/windows/desktop/aa376399(v=vs.85).aspx
требования являются:
Minimum supported client: Windows XP [desktop apps only]
Minimum supported server: Windows Server 2003 [desktop apps only]
Header: sddl.h
Library: Advapi32.lib
DLL: Advapi32.dll
Я использую Windows 10 Home, 64-разрядный компьютер. У меня есть * .lib и * .dll файлов соответственно:
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64\AdvAPI32.Lib
C:\Windows\System32\advapi32.dll
Когда я заполнить «#inclucde» в stdafx.h, я не получаю сообщение об ошибке от Intellisense. Напротив, «#include <blah.h>» дает красную подсветку под заголовком «include», а подсказка говорит «Ошибка: не удается открыть исходный файл« blah.h ».
В моем исходном файле .cpp, который включает в себя «stdafx.h», добавить код
BOOL OK ... ;
PSID owner;
char *sOwner;
OK = ConvertSidToStringSidW(owner, sOwner);
, но затем я получаю красный покачивание под ConvertSidToStringSidW.
В обозревателе решений под проектом в разделе Внешние зависимости находятся файлы SCardErr.h и sdkddkver.h, но ничего, без sddl.h, между этими двумя. (И, кстати, sddkver.h определяет _WIN32_WINNT_THRESHOLD 0x0A00. Тестирование с IntelliSense в редакторе, _WIN32_WINNT также 0x0A00.)
При компиляции, я первым получил сообщение об ошибке, что файл sddl.h не найден , У меня есть несколько копий на компьютере, и добавил к «Дополнительные каталоги включения» для всех конфигураций, каталог
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared
компилирование еще терпит неудачу с «идентификатор ххх не определен» и «ххх»: идентификатор не найден, из IntelliSense и Build соответственно.
Заголовок sddl.h по-прежнему не во внешних зависимостях. Щелкните правой кнопкой мыши на sdksddkver.h. Я получаю полный путь: недавно добавленный дополнительный каталог include. Я не знаю, что это было до того, как я добавил этот каталог include.
Щелкните правой кнопкой мыши на директиве include в stdafx.h, я могу открыть sddl.h. Редактор отображает части содержимого в светло-сером цвете, когда содержимое защищается директивой # if/# ifdef, аргумент которого является ложным. Однако функция, которую я хочу использовать, ConvertSidToStringSid, отображается в полном цвете.
Непонятно, существует ли у него ключ, согласно которому сообщения об ошибках говорят «определенные», а не «объявленные». В свойствах проекта перечислены ссылки, входные данные, дополнительные зависимости, файл advapi32.lib.
Что я делаю неправильно?