Entwickler-Ecke

Sonstiges (.NET) - Ermitteln von speziellen Pfaden in verschiedenen OS


hiwa - Do 28.05.09 16:34
Titel: Ermitteln von speziellen Pfaden in verschiedenen OS
Hallo,

ich bin für mein Programm, was ich gerade schreibe auf der Suche nach einem eleganten Weg spezielle Pfade (hier für user32.dll)
zu ermitteln.
Das Programm soll später in verschiedenen Betriebssystemen zumn Einsatz kommen, wobei sich die Pfade für verschiedene Bibliotheken
sich dann ändern, z.B. bei Windows XP und Vista.

Ich habe schon bereits hierzu ein Befehl gefunden, womit man das evtl. rauskriegen kann: SHGetFolderPath()

Ich weiss aber bis lang noch nicht wie man das einsetzt und auf was man alles achten soll.

Voraus danke für eure Tipps und Hilfestellung!!!


danielf - Do 28.05.09 16:55

Hallo,

mit der statischen Klasse Environment kannst du dir spezielle System-Verzeichnisse ausgeben lassen.

Zum Beispiel:


C#-Quelltext
1:
Environment.GetFolderPath(Environment.SpecialFolder.System);                    


Hoffe das hilft dir weiter,

Gruß Daniel


hiwa - Fr 29.05.09 13:54

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

mit der statischen Klasse Environment kannst du dir spezielle System-Verzeichnisse ausgeben lassen.

Zum Beispiel:


C#-Quelltext
1:
Environment.GetFolderPath(Environment.SpecialFolder.System);                    


Hoffe das hilft dir weiter,

Gruß Daniel



Hallo Daniel,
ich danke dir für das gute Tipp was du mir gegeben hast..Tatsächlich ist wohl mein Problem dort, dass ich ein DLLImport-Befehl benutze, und dort (so ich das verstaden habe) darf ich nur konstante Parameter angeben, z.B.

public delegate bool EnumDelegate(IntPtr hWnd, int lParam);
[DllImport(@"C:\System32\user32.dll", EntryPoint = "EnumDesktopWindows", ExactSpelling = false, CharSet=CharSet.Auto, SetLastError = true)]

Der Bereich @"C:\System32\user32.dll", soll aber unter unterschiedliche Betriebsysteme von Windows variabel sein, und wenn ich da eine veränderliche String-Variable einsetze, bekomme ich folgende Fehlermeldung:

"Ein Attributargument muss ein constant-, typeof- oder Arrayerstellungsausdruck eines Attributparametertyps sein."


Kha - Fr 29.05.09 15:32

Ein einfaches "user32.dll" genügt :zwinker: .