1

Ich versuche, die Funktion ConvertSidToStringSid() in einem Visual Studio 2015 Community, Konsolenprojekt zu verwenden.Visual Studio 2015 C++ sddl.h erscheint nicht als externe Abhängigkeit

Nach der Msdn Seite

https://msdn.microsoft.com/en-us/library/windows/desktop/aa376399(v=vs.85).aspx

die Anforderungen sind:

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 

ich einen Windows 10 Start bin mit 64-Bit-Computer. Ich habe die * LIB und * .dll-Dateien jeweils in:

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64\AdvAPI32.Lib 
C:\Windows\System32\advapi32.dll 

Wenn ich in der "#inclucde" in stdafx.h füllen, erhalte ich keinen Fehler von IntelliSense. Im Gegensatz dazu "#include <blah.h>" gibt eine rote Wackeln Unterstreichung unter der "Include", und eine Mouse-over sagt "Fehler: Kann die Quelldatei nicht öffnen" blah.h "'.

In meiner CPP-Quelldatei, die "stdafx.h" enthält, füge ich den Code

BOOL OK ... ; 
    PSID owner; 
    char *sOwner; 
    OK = ConvertSidToStringSidW(owner, sOwner); 

aber dann bekomme ich die rote wackeln unter ConvertSidToStringSidW.

Im Solution Explorer, unter dem Projekt, unter Externe Abhängigkeiten gibt es Dateien SCardErr.h und sdkddkver.h, aber nichts, keine sddl.h, zwischen diesen beiden. (Und, nebenbei bemerkt, definiert sddkver.h _WIN32_WINNT_THRESHOLD 0x0A00. Testen mit IntelliSense im Editor, _WIN32_WINNT ist auch 0x0A00.)

Beim Kompilieren, ich zum ersten Mal eine Fehlermeldung, dass die Datei sddl.h konnte nicht gefunden werden . Ich habe mehrere Kopien auf dem Computer, und zu den „Zusatz Einfügeverzeichnisse“ für alle Konfigurationen, das Verzeichnis

C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared 

Compilieren immer noch nicht mit „Kennung xxx ist nicht definiert“ und ‚xxx‘: Identifier nicht gefunden wird, aus IntelliSense und Build jeweils.

Der Header sddl.h ist immer noch nicht in den externen Abhängigkeiten. Rechtsklick auf den sdksddkver.h Ich bekomme seinen vollständigen Pfad: Das neu hinzugefügte zusätzliche Include-Verzeichnis. Ich weiß nicht, was es war, bevor ich dieses Include-Verzeichnis hinzugefügt habe.

Rechtsklick auf die Include-Anweisung in stdafx.h, ich kann sddl.h öffnen. Der Editor zeigt Teile des Inhalts in einer hellgrauen Farbe an, wenn der Inhalt durch eine # if/# ifdef-Anweisung geschützt wird, deren Argument falsch ist. Die Funktion, ConvertSidToStringSid, die ich verwenden möchte, wird jedoch in Farbe angezeigt.

Nicht sicher, ob es ein Hinweis ist, dass die Fehlermeldungen "definiert" statt "deklariert" sagen. In den Projekteigenschaften Linker, Eingabe, zusätzliche Abhängigkeiten wird die Datei advapi32.lib aufgelistet.

Was mache ich falsch?

Antwort

1

Ich fand die Lösung selbst. Das Problem war, dass ich zwei Projekte in der gleichen "Lösung" hatte, jede mit ihrer eigenen stdafx.h Datei. Ich hatte die falsche stdafx.h-Datei im Editor geöffnet und die Direktive #include in die falsche Datei eingefügt.

-Danke