| |
VB.NET - Ein- und UmsteigerBenötige Hilfe bei Code-Abschnitt | | | Autor: Dexter7811 | Datum: 27.07.14 12:36 |
| Hallo zusammen,
ich bin neu hier im Forum und benötige Hilfe bei einer Sache.
Ich habe schon etwas Erfahrung in Visual Basic gesammelt, allerdings ist es noch
ein weiter Weg bis ich es mal richtig gut kann.
Nun zum Wesentlichen: Ich möchte gerne ein Äquivalent für das .NET 3.5 des folgenden Codes schreiben:
'Dieser Code-Abschnitt funktioniert nur ab .NET 4!
Imports Microsoft.Win32 'für die RegistryKey-Klasse
Imports Microsoft.VisualBasic.Devices 'für SysInfo
Private Function IRGENDWAS
Dim BasisSchlüssel As RegistryKey
Dim UnterSchlüssel As RegistryKey
'Prüfen ob es sich um ein 64-Bit oder 32-Bit Betriebsystem handelt
'Im Grunde genommen will ich nur wissen, wie ich diese If-Anweisung ändern
' muss:
'--------------------------------------------------------------------------
If Enviroment.Is64BitOperatingSystem = True Then
BasisSchlüssel = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, _
RegistryView.Registry64)
'--------------------------------------------------------------------------
'Der Rest würde auch unter .NET 3.5 passen
UnterSchlüssel = BasisSchlüssel.OpenSubKey("SOFTWARE\Microsoft" & _
"\Windows" & _
"NT\CurrentVersion", _
False)
Else 'Andernfalls (32-Bit)
UnterSchlüssel = Registry.LocalMachine.OpenSubKey( _
"SOFTWARE\Microsoft" & _
"\Windows" & _
"NT\CurrentVersi" & _
"n", False)
End If
.
.
.
End Function Würde mich sehr über Hilfe bzw. Ratschläge eurerseits sehr freuen.
Grüße
Dexter7811 | |
Re: Benötige Hilfe bei Code-Abschnitt | | | Autor: Rippler | Datum: 27.07.14 15:01 |
| if IntPtr.Size = 8 then | |
Re: Benötige Hilfe bei Code-Abschnitt | | | Autor: Dexter7811 | Datum: 27.07.14 16:05 |
| Hallo Rippler,
erst einmal Dankeschön für deine Antwort.
Wenn IntPtr.Size = 8 <- 64-Bit, wenn = 4 <- 32-Bit. Ist das soweit richtig?
Aber was mache ich mit folgendem Code:
BasisSchlüssel = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, _
RegistryView.Registry64) Hier meckert der Compiler nämlich über folgendes:
"OpenBaseKey" ist kein Member von "Microsoft.Win32.RegistryKey".
Wie würdest du das codetechnisch lösen? Könntest du mir bitte ein Codebeispiel posten? | |
Re: Benötige Hilfe bei Code-Abschnitt | | | Autor: Dexter7811 | Datum: 27.07.14 18:06 |
| Okay. Deswegen funktioniert das auch nur ab .NET 4. Ich verstehe. Könntet ihr mir anhand eines Beispiels zeigen, wie man das mit Hilfe der WinAPI macht? Unter der Berücksichtigung das es nicht nur darum geht zu prüfen, welches OS läuft, also 32-Bit oder 64-Bit, sondern auch darum wie man dann dementsprechend den Basisschlüssel richtig rausliest. Oder kennt jemand vielleicht einen Link, wo das anhand eines Beispiels in Visual Basic gezeigt wird?
Beitrag wurde zuletzt am 27.07.14 um 18:16:45 editiert. | |
Re: Benötige Hilfe bei Code-Abschnitt | | | Autor: Dexter7811 | Datum: 27.07.14 18:57 |
| Ja ich wollte es schon so haben, dass das Programm erkennt ob es sich um ein 32-Bit oder 64-Bit OS handelt und dementsprechend aus der Registry liest. So wie der Code-Abschnitt in meinem ersten Posting. | |
Re: Benötige Hilfe bei Code-Abschnitt | | | Autor: Dexter7811 | Datum: 27.07.14 19:41 |
| Ich habe bisher mal folgendes gebastelt:
Imports System.Runtime.InteropServices
<DllImport("kernel32.dll", SetLastError:=True, _
CallingConvention:=CallingConvention.Winapi)> _
Public Function IsWow64Process( _
ByVal hProcess As Long, _
ByRef Wow64Process As Boolean) As Long
End Function
Private Function Is64BitOperatingSystem() As Boolean
If IntPtr.Size = 8 Or IntPtr.Size = 4 And _
Is32BitProcessOn64BitProcessor() Then
Return True
Else
Return False
End If
End Function
Private Function Is32BitProcessOn64BitProcessor() As Boolean
Dim RetVal As Boolean
IsWow64Process(Process.GetCurrentProcess().Handle, RetVal)
Return RetVal
End Function Wäre das in der Form so einigermaßen richtig? | |
Re: Benötige Hilfe bei Code-Abschnitt | | | Autor: Dexter7811 | Datum: 27.07.14 19:48 |
| DaveS schrieb:
Zitat: | | Andersrum wenn du etwa RegistryView.Registry64
verwendest wird unbedingt aus der 64Bit Registry gelesen (es
sei denn es ist ein 32Bit OS, wo es nur eine 32Bit Registry
gibt)
| |
Genauso will ich es. Wenn das Programm in einem 64-Bit OS gestartet wird, soll es unbedingt aus der 64-Bit Registry lesen. Andernfalls ganz normal. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|