Announcement

Collapse
No announcement yet.

Umstellung auf Windows 7 64-Bit

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Umstellung auf Windows 7 64-Bit

    Hallo zusamen,
    ich habe bisher unter WXP die Registry ausgelesen. Eines Schlüssel habe ich wie folgt geprüft.

    Code:
    Imports Microsoft.Win32
    
     Function IsKey(ByVal sRegistryKey As RegistryKey, ByVal sKey As String) As Boolean
        Dim objRegKey As RegistryKey = sRegistryKey  'Registry.CurrentUser
        Dim objSubKey As RegistryKey
    
        Try
          'Den Schlüssel testweise öffnen
          objSubKey = objRegKey.OpenSubKey(sKey, True)
          objSubKey.Close()
          Return True
        Catch
          Return False
        End Try
    
      End Function
    Das funktioniert nicht mehr.
    Liegt es an Imports Microsoft.Win32

    Was mache ich falsch.

    Des Weiteren habe jetzt Probleme eine Access-DB zu öffnen..
    Dies habe ich wie folgt gemacht:

    Code:
    PstrConnString=	"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Ordner\AccessBD.mdb;Jet OLEDB:Database Password=MyPWD;"
    
     Dim cnn As New OleDbConnection(PstrConnString)
        Dim SqlCmd As OleDbCommand
        Dim strSQL As String = "SELECT Count(*) AS MyCount FROM MyTable"
    
          If cnn.State = ConnectionState.Closed Then cnn.Open()
    Was muss ich verändern, damit ich die DB unter Windows 7 64-Bit öffnen kann..

    Was muss ich noch alles beachten...

    Ich hoffe mir kann jemand weiter helfen...


    Danke

  • #2
    Hallo,

    mit dem "Platform Target" in der Build-Konfiguration wird eingestellt auf welcher Plattform das Program laufen soll.
    Da .net-Code nach IL kompiliert wird kann dieser Code auf durch die virtuelle Maschine (CLR) auf jeder Plattform laufen - konsequenter Weise wurde deshalb die Plattform Any CPU eingeführt. Das funktioniert wunderbar wenn nur "managed Code" (.net Code) verwendet wird.

    Erfolgt vom Programm ein Zugriff auf eine 32bit-Komponente so funktioniert das auf 32bit-Plattformen (x86) auch wunderbar nur bei 64bit (x64) knallt es. Warum? Wird das Programm von der CLR geladen schaut diese für welche Plattform das Programm (die Assemblies) gedacht ist (Einstellung "Plattform Target") und findet "Any CPU" so wird es als 64bit-Prozess gestartet und somit kann nicht auf eine 32bit-Komponente zugegriffen werden.
    Genau dieses Problem liegt hier vor.

    Der Ausweg ist die Verwendung von corflags.exe um die Assembly in den 32bit-Modus zu schalten. Händisch muss das (glücklicherweise) nicht erledigt werden denn als Plattform Target kann x86 eingestellt werden und dann erledigt das die CLR


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Originally posted by M Merlin View Post
      ... Das funktioniert nicht mehr. ...

      ... Des Weiteren habe jetzt Probleme eine Access-DB zu öffnen..

      Ich hoffe mir kann jemand weiter helfen...
      Wenn du genauere Fehlermeldungen als "geht nicht" liefern würdest könnte man dir besser helf. So muss man raten.

      Was funktioniert genau nicht mehr= Wie wirkt sich das aus? Kommen Fehlermeldungen? Wenn ja welche?

      Comment


      • #4
        Wenn du genauere Fehlermeldungen als "geht nicht" liefern würdest könnte man dir besser helf. So muss man raten.

        Was funktioniert genau nicht mehr= Wie wirkt sich das aus? Kommen Fehlermeldungen? Wenn ja welche?
        Die Fehlermeldung lautet, das kein OLEDB 4 Jet installiert wäre.

        Ich habe den Hinweis von gfoidl mit dem Umschalten auf x86 befolgt. Damit war das Problem mit der Access-DB behoben.

        Aber das auslesen bzw. schreiben der Registry, läuft noch in einem VB2003 Code. Dort habe ich die Umstallung auf x86 nicht gefunden. Gibts das da nicht? Wo finde ich das? Oder was muss ich dort machen, damit das wieder geht.
        Noch als hinweis. Ich bekomme keine Fehlermeldung.
        Es werden die Schlüssel nicht mehr gelesen, bzw geschrieben.

        Oder sehn die jetzt an einer anderen Stelle in der Registry...?

        Comment


        • #5
          Wie sieht denn dein Code aus?

          Hast du schon einmal selbst in die Registry geschaut?
          Zuletzt editiert von derOptimist; 27.08.2010, 22:02. Reason: Falsch verstanden

          Comment


          • #6
            Guck dir mal die Themen die in Wiki unter http://de.wikipedia.org/wiki/WOW64 stehen an. Hier for allem Umleitung von Zugriffen auf HKLM von 32-Bit Prozessen unter 64-Bit WIndows.

            Comment


            • #7
              OK. Danke. Habe die Keys unter HKEY_LOCAL_MACHINE\Software\WOW6432Node gefunden. Das heißt aber, dass ich beim Lesen erst abfragen muss ob ich ein 32- oder 64-Bit OS nutze.

              Hast du evtl. Code wie ich das unter VB2003 bzw. VB2005 mache?? Oder ist das bei beiden gleich?

              Schon mal Danke....

              Comment


              • #8
                Hi,

                du müsstest so daran kommen:

                My.Computer.Info.OSPlatform

                Comment

                Working...
                X