EDIT: Es lag an der DLL selbst (Drittanbieter), die ein Kompatibilitäts-Problem hat. Weiterlesen lohnt nicht!
Situation: Ich lade eine DLL per Windows.LoadLibrary() bei Bedarf dynamisch nach.
Dies funktioniert unter Windows 10 Home/Pro ganz prächtig (alles 64 Bit: OS + Programm + DLL). Damit bin ich sehr glücklich.
Doch unter Windows Enterprise/Server schlägt LoadLibrary() immer fehl, immer Result=0. Die DLL ist aber vorhanden (FileExists true).
Durch googeln bin ich auf die Stichworte "AppLocker" und "DLL Rules" gestoßen. Hatte ich vorher noch nie gehört.
Ich vermute, dass Windows Enterprise/Server verlangt, dass die DLL erst in AppLocker per DLL Rule freigegeben werden muss.
Windows merkt sich dann anscheindend einen Hash-Wert gegen DLL-Manipulation, weil DLLs nicht mit einem Zertifikat signiert werden können.
Mein Programm habe ich signiert (Code Signing), aber das nützt mir zum Laden der DLL nichts.
Nun mein ganz banales Problem: Wo finde ich AppLocker und wie konfiguriert man es?
Mir steht ein Windows Server 2016 zum Testen zur Verfügung. Aber wenn ich da in den Apps oder in den Systemeinstellungen nach AppLocker suche, finde ich nichts.
Ich habe natürlich danach gegoogelt (vielleicht nicht mit den richtigen Worten), finde aber immer nur als Anleitung: "verwenden Sie AppLocker". Ja, haha.

Grüße, Jörg