Sprache: VB
Das folgende Skript erkennt ob es sich um ein 32bit oder 64bit Version des Betriebssystem handelt.
Bei einem64bit OS finden sich in My.Application.Info.loadedAssemblies hinweise darauf.
Die Idee My.Application.Info.LoadedAssemblies auszuwereten ist aus igendeinem Formum – leider weiss ich nicht mehr wo – aber die Idee funzt hervorragend.
Imports System.Collections.ObjectModel
'''''' <summary>
'''''' Speicher ob 64 oder 32 bit
'''''' </summary>
'''''' <remarks></remarks>
Public IsOS64bit As Boolean = False
'''''' <summary>
'''''' prueft auf 64 oder 32 OS
'''''' </summary>
'''''' <returns></returns>
'''''' <remarks></remarks>
Public Function OS64Bit() As Boolean
Try
For Each ra As Reflection.Assembly In My.Application.Info.LoadedAssemblies
If ra.Location.ToLower.Contains("framework64") Then
IsOS64bit = True
= True
Exit For
Else
IsOS64bit = False
End If
Next
Catch ex As Exception
IsOS64bit = False
End Try
End Function
Imports System.Collections.ObjectModel
'''''' <summary>
'''''' Speicher ob 64 oder 32 bit
'''''' </summary>
'''''' <remarks></remarks>
Public IsOS64bit As Boolean = False
'''''' <summary>
'''''' prueft auf 64 oder 32 OS
'''''' </summary>
'''''' <returns></returns>
'''''' <remarks></remarks>
Public Function OS64Bit() As Boolean
Try
For Each ra As Reflection.Assembly In My.Application.Info.LoadedAssemblies
If ra.Location.ToLower.Contains("framework64") Then
IsOS64bit = True
= True
Exit For
Else
IsOS64bit = False
End If
Next
Catch ex As Exception
IsOS64bit = False
End Try
End Function
Alte URL:
/snippet/64bit-32bit-durch-loadedassemblies/1097
Mal eine Frage nebenbei: wenn jemand diesen Snippet so schlecht bewertet hat, wäre es doch hilfreich zu wissen warum. Evtl. würde das ja weiterhelfen.
Gruß SVSS
Da stimme ich Volker voll und ganz zu, das wäre sehr hilfreich.
Ich halte die Methode für etwas holprig – es geht IMHO viel sauberer (allerdings ist mein Beispiel hier in C#):
[code]public static bool Is64BitOS()
{
return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}[/code]
…wobei das nur klappt wenn für „any CPU“ kompiliert wurde. Der einzig sichere (und wirklich saubere) Weg ist PInvoke von [b]GetNativeSystemInfo[/b]
Ab .NET 4 gibt es dann die [b]Environment.Is64BitOperatingSystem[/b]-Eigenschaft. In neueren Applikationen sollte diese natürlich bevorzugt werden. Intern wird von dieser Eigenschaft die [b]IsWow64Process[/b]-Methode verwendet. Siehe dazu:
http://referencesource.microsoft.com/#mscorlib/system/environment.cs,75feca36cdd83149