Permalink

0

Wurde die Anwendung auf einem Server gestartet?

Eine 3rd Party Komponente musste, abhängig davon, ob es sich um einen Windows Client (XP, 7, 8, …) oder einen Windows Server (2003, 2008, 2012, …) handelt, unterschiedlich registriert werden. Nicht ausreichend war hier SystemInformation.TerminalServerSession, da die Komponente auch außerhalb von Terminal-Sitzungen verwendet werden sollte. Auf Stackoverflow bin ich auf eine Lösung für das Problem gestoßen, die ich euch nicht vorenthalten will.

[DllImport("shlwapi.dll",SetLastError = true,EntryPoint = "#437")]
private static extern bool IsOS(int os);
private const int OsAnyServer = 29;
...
if (IsOS(OsAnyServer))
...

Der EntryPoint muss entsprechend gesetzt werden, da es sonst z.B. unter Windows XP zu einem Fehler kommt, weil die EntryPoints der DLL nicht bekannt sind.

Weitere Konstanten im MSDN-Eintrag.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.