Herausfinden ob Workstation oder Server,...

21/02/2009 - 22:07 von Kerem Gümrükcü | Report spam
Hallo,

gibt es in .NET eine Funktion mit der ich herausfinden kann, ob es
sich bei dem aktuellen Computer um eine Workstation oder um
einen Server handelt, ohne PInvoke? Ich könnte überprüfen, welcher
Typ Runtime geladen wurde, also für Workstation oder für Server, aber
das ist kein wirklicher zuverlàssiger Test. Ich könnte auch in der Registry
auslesen ob der ProductType String ein bestimmter String ist, wobei man d
as auch von Hand àndern kann, was aber gegen die EULA verstoßen würde!
Damit ist der Pfad:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions

gemeint

Ich benutze zur Zeit eine (undokumentierte) Funktion, die zwar das gleiche
macht, also den Registry-Key ausliest, wenn man sich die Interna der
Funktion
genauer ansieht. Der Aufruf kapselt halt den ganzen Registry Fummel. Mir
geht es darum, ob es in der .NET irgend eine simple Möglichkeit gibt, ohne
auf die Registry oder undokumentierte Methoden zurückzugreifen,...

Hier die Funktion für interessierte:

public enum NtProductType : uint
{
VER_NT_WORKSTATION = 0x1,
VER_NT_DOMAIN_CONTROLLER = 0x2,
VER_NT_SERVER = 0x3,
}

[DllImport("ntdll.dll",SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool RtlGetNtProductType([Out] out
NtProductType ProductType);


Kann man das irgendwo im .NET in irgend einer Klasse ohne PInvoke abrufen?
Ich kenne zwar die meisten System-Klassen, aber vielleicht kenne ich was
ganz bestimmtes nicht,...


Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."
 

Lesen sie die antworten

#1 Stefan Simon
21/02/2009 - 22:57 | Warnen spam
"Kerem Gümrükcü" schrieb im Newsbeitrag
news:

gibt es in .NET eine Funktion mit der ich herausfinden kann, ob es
sich bei dem aktuellen Computer um eine Workstation oder um
einen Server handelt, ohne PInvoke? [...] Ich könnte auch in der Registry
auslesen [...]



Registry auslesen == PInvoke

Davon abgesehen scheint mir die einzig sichere Möglichkeit zu sein, die
installierte Windowsversion mittels PInvoke und der Methoden der
kernel32.dll zu ermiteln.

Warum darf es denn kein PInvoke sein?

Stefan

Ähnliche fragen