2010-10-06 38 views
0

Cette fois, je suis Tring travailler avec des valeurs de registre et donc je suis en utilisant le code suivantTravailler avec les valeurs du registre

Private Function RegKeyExists(ByVal hKey As Long, ByVal sKeyPath As String) As Boolean 

     Dim lResult As Long 
     Dim hSubkey As Long 

     lResult = RegOpenKeyEx(hKey, sKeyPath, 0, KEY_EXECUTE, hSubkey) 
     ' Determine if handle is valid 
     If hSubkey <> 0 Then 
      RegKeyExists = True 
      RegCloseKey(hKey) 
     End If 

End Function 

et j'appelle cette fonction de la ligne folloing

RegKeyExists(HKEY_LOCAL_MACHINE, "\Software\OTA\Elefsina\Vechicle") 

Bien sûr, le chemin est eXISTE pas et donc je prévois recevoir tho de la fonction FAUX, mais intead de ce programme est stoped dans la fonction et me donne une erreur de

"System.AccessViolationException was unhandled 
    Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 
    Source=vehicles 
    StackTrace: 
     at vehicles.vehicleformmain.RegOpenKeyEx(Int64 hKey, String& lpSubKey, Int64 ulOptions, Int64 samDesired, Int64 phkResult) 
     at vehicles.vehicleformmain.RegKeyExists(Int64 hKey, String sKeyPath) in D:\Work\ADATA\New2010Projects\OTA\Elefsina\Projects\vehicles\vehicles\vehicleformmain.vb:line 95 
     at vehicles.vehicleformmain.vehicleformmain_Load(Object sender, EventArgs e) in D:\Work\ADATA\New2010Projects\OTA\Elefsina\Projects\vehicles\vehicles\vehicleformmain.vb:line 106 
     at System.EventHandler.Invoke(Object sender, EventArgs e) 
     at System.Windows.Forms.Form.OnLoad(EventArgs e) 
     at System.Windows.Forms.Form.OnCreateControl() 
     at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 
     at System.Windows.Forms.Control.CreateControl() 
     at System.Windows.Forms.Control.WmShowWindow(Message& m) 
     at System.Windows.Forms.Control.WndProc(Message& m) 
     at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
     at System.Windows.Forms.Form.WmShowWindow(Message& m) 
     at System.Windows.Forms.Form.WndProc(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
     at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
     at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow) 
     at System.Windows.Forms.Control.SetVisibleCore(Boolean value) 
     at System.Windows.Forms.Form.SetVisibleCore(Boolean value) 
     at System.Windows.Forms.Control.set_Visible(Boolean value) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.Run(ApplicationContext context) 
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() 
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() 
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine) 
     at vehicles.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81 
    InnerException: " 

Je ne peux pas comprendre pourquoi cette erreur s'est produite et ce que je dois faire est là quelqu'un pour m'aider?

Répondre

2

Il n'y a pas besoin d'utiliser l'API de Windows ici ... le framework .NET provides means for accessing the registry:

Dim regKey = Registry.LocalMachine.OpenSubKey("Software\OTA\Elefsina\Vechicle", False) 

If regKey Is Nothing Then 
    ''# Key doesn't exist 

Else 
    ''# Key exists -- do something with it, if you want, and then close it 

    regKey.Close() 
End If 
+1

PS: "véhicule" n'a qu'un seul "c". :-) – Heinzi

+0

je vous remercie pour la correction, il a été fait par une faute de frappe –

+0

Votre aide était Greate, maintenant s'il vous plaît dites-moi comment créer une sous-clé et passer la valeur à elle? –