Feedback

64bit/32bit durch LoadedAssemblies

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

5 Kommentare

  1. 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]

  2. …wobei das nur klappt wenn für „any CPU“ kompiliert wurde. Der einzig sichere (und wirklich saubere) Weg ist PInvoke von [b]GetNativeSystemInfo[/b]