Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 6
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Windows 64bit Version erkennen


Autor: Sven Schork
Sprache: C#
Bewertung:
1.44 (2 votes)
Anzahl der Aufrufe: 6837
  
Kick it on dotnet-kicks.de  

Beschreibung:

Das folgende Skript erkennt ob es sich um ein 32bit oder 64bit Version des Betriebssystem handelt. Laut meinen Untersuchungen wird bei einem 32bit Windows der Processor immer mit x86 im RegestryKey LocalMachine\HARDWARE\DESCRIPTION\System\CentralProcessor\0\Identifier ausgegeben. Bei einem 64bit System wird EM64T ausgegeben. Da ich leider nur ein System mit einem 64bit Betriebssystem zur Verfügung habe weiß ich nicht ob der Wert z.B. bei einem AMD Prozessor eventuell ein anderer ist. Aus diesem Grund prüfe ich nur auf x86 und nehme an das alles andere 64bit ist.

Abgelegt unter: 64bit, 32bit, WinodwsXP, Version.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string _strOS="";
RegistryKey _rootKey = Registry.LocalMachine;
string _subKey = @"HARDWARE\DESCRIPTION\System\CentralProcessor\0";
RegistryKey _key = _rootKey.OpenSubKey(_subKey);
string _procName = (string)_key.GetValue("Identifier", "");

string[] _values = _procName.Split(new char[] { '' '' }, 2);
if (_values.Length >= 1)
{
  if (string.Compare(_values[0], "x86", true) == 0)
  {
    _strOS += "(32bit)";
  }
  else
  {
    _strOS += "(64bit)";
  }
}

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

MoD schrieb am:  19.03.2009 08:33:04

einfacher
if (IntPtr.Size == 8)
_strOS += "(64bit)";
else
_strOS += "(32bit)";
Schork schrieb am:  23.03.2009 14:47:07

Hallo MoD ich gebe dir recht. Das Problem ist jedoch was machst du wenn deine Anwendung für die x86 Processor kompiliert wurde? Dann sollte auf dem 32bit und 64bit das gleiche Ergebnis ausgegeben werden.
Michael Battermann schrieb am:  22.07.2010 23:40:32

Etwas kürzer geht es so:
string value = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE", EnvironmentVariableTarget.Machine);
_strOS += value.StartsWith("x86") ? "(32bit)" : "(64bit)";


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.