Я хочу создать библиотеку, чтобы иметь возможность изменить ACL объекта. Я создал проект C++ в VS 2015 (все компоненты C++ установлены), что дало мне макет библиотеки DLL.
Я включил пример кода по ссылке выше в свой файл .cpp и включил alcapi.h :
#include <windows.h>
#include <stdio.h>
#include <Aclapi.h>
DWORD AddAceToObjectsSecurityDescriptor(
LPTSTR pszObjName, // name of object
SE_OBJECT_TYPE ObjectType, // type of object
LPTSTR pszTrustee, // trustee for new ACE
TRUSTEE_FORM TrusteeForm, // format of trustee structure
DWORD dwAccessRights, // access mask for new ACE
ACCESS_MODE AccessMode, // type of ACE
DWORD dwInheritance // inheritance flags for new ACE
)
{
DWORD dwRes = 0;
PACL pOldDACL = NULL, pNewDACL = NULL;
PSECURITY_DESCRIPTOR pSD = NULL;
EXPLICIT_ACCESS ea;
...
Когда я пытаюсь построить это, я получаю следующие ошибки, например:
LNK2028 unresolved token (0A00005D) "extern "C" unsigned long __stdcall SetNamedSecurityInfoW(wchar_t *,enum _SE_OBJECT_TYPE,unsigned long,void *,void *,struct _ACL *,struct _ACL *)" (?SetNamedSecurityInfoW@@$$J228YGKPA_WW4_SE_OBJECT_TYPE@@KPAX2PAU_ACL@@3@Z) referenced in function "unsigned long __cdecl AddAceToObjectsSecurityDescriptor(wchar_t *,enum _SE_OBJECT_TYPE,wchar_t *,enum _TRUSTEE_FORM,unsigned long,enum _ACCESS_MODE,unsigned long)" (?AddAceToObjectsSecurityDescriptor@@$$FYAKPA_WW4_SE_OBJECT_TYPE@@0W4_TRUSTEE_FORM@@KW4_ACCESS_MODE@@K@Z)
LNK2019 unresolved external symbol "extern "C" unsigned long __stdcall SetNamedSecurityInfoW(wchar_t *,enum _SE_OBJECT_TYPE,unsigned long,void *,void *,struct _ACL *,struct _ACL *)" (?SetNamedSecurityInfoW@@$$J228YGKPA_WW4_SE_OBJECT_TYPE@@KPAX2PAU_ACL@@3@Z) referenced in function "unsigned long __cdecl AddAceToObjectsSecurityDescriptor(wchar_t *,enum _SE_OBJECT_TYPE,wchar_t *,enum _TRUSTEE_FORM,unsigned long,enum _ACCESS_MODE,unsigned long)" (?AddAceToObjectsSecurityDescriptor@@$$FYAKPA_WW4_SE_OBJECT_TYPE@@0W4_TRUSTEE_FORM@@KW4_ACCESS_MODE@@K@Z)
Компоновщик не находит определения функций, объявленных в aclapi.h.
Что мне нужно сделать, чтобы это сработало?
Заранее спасибо.
SetNamedSecurityInfo
, которая расскажет вам, какие библиотеки вам нужно связать. - person Some programmer dude   schedule 29.06.2016advapi32.lib
. Добавьте его в настройках компоновщика проекта. Некоторые из этих библиотек импорта компонуются автоматически, но не все системные библиотеки компонуются автоматически. - person Some programmer dude   schedule 29.06.2016__declspec(dllexport) or __declspec(dllimport)
- person Hannes Hauptmann   schedule 29.06.2016advapi32.lib
символов много, но далеко не все. Так уж получилось, что связанный вопрос нуждался в той же библиотеке, но для разных символов. - person MSalters   schedule 29.06.2016