Avatar billede jaboy Nybegynder
15. maj 2013 - 10:35 Der er 15 kommentarer og
1 løsning

hente værdi fra registreringsdatabasen

Hey alle

Jeg prøver at hente en værdi fra regdatabasen så jeg kan finde ud af hvor et program er installeret og bruge dens exe fil.


Men hver gang jeg bruger min kode for jeg en NullReferenceException på linjen med "string test2"


Nogen der ved hvad jeg gør galt ?


koden:
using System;
using Microsoft.Win32;

....

RegistryKey test = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver");

string test2 = (string)test.GetValue("InstallLocation", "0");

Console.WriteLine(test2);
Console.ReadKey();


Her er et billed af regdatabasen så i kan se hvilken key jeg snakker om
https://dl.dropboxusercontent.com/u/18203211/arkiv/reg%20screen%20dump.png
Avatar billede jakobdo Ekspert
15. maj 2013 - 11:46 #1
Fandt dette i lidt "googling", utestet.

string InstallPath = (string)Registry.GetValue(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver", "InstallLocation", null);   
if (InstallPath != null)
{
    // Do stuff
}
Avatar billede jaboy Nybegynder
15. maj 2013 - 12:25 #2
hey jakobdo, desværre virker din kode heller ikke

når jeg afprøver den bliver InstallPath "Null"

(jeg var nød til at sætte "HKEY_LOCAL_MACHINE\" foran den path for at den vil godtage det, men alligevel dur det ikke)



Jeg ved ikke om det vil hjælpe, men lige nu bruger jeg
Microsoft win7 sp1
og
Microsoft Visual C# 2010 Express
Avatar billede jakobdo Ekspert
15. maj 2013 - 12:53 #3
Denne kode virker hos mig:

string InstallPath = (string)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WinRAR archiver", "InstallLocation", null);
if (InstallPath != null)
{
  Console.WriteLine(InstallPath);
}
Avatar billede jaboy Nybegynder
15. maj 2013 - 13:37 #4
hos mig sker der ikke noget
som du kan se her
https://dl.dropboxusercontent.com/u/18203211/arkiv/jacobdo_screendump.png

og hvis jeg tænder den mode hvor jeg kan se hvad der er gemt i "InstallPath" siger den at den er "Null"

(som kan ses her)
https://dl.dropboxusercontent.com/u/18203211/arkiv/jacobdo_debug.png
Avatar billede jakobdo Ekspert
15. maj 2013 - 13:53 #5
Underligt.
Kan det være nogle rettigheder ?
Avatar billede jaboy Nybegynder
15. maj 2013 - 14:27 #6
har lige prøvet at køre det som administrator, ser ikke ud til at hjælpe
Avatar billede jakobdo Ekspert
15. maj 2013 - 14:36 #7
Og du er sikker på stierne er 100% korrekte ?
Det virker på min windows 7 uden problemer.
Avatar billede jaboy Nybegynder
15. maj 2013 - 14:42 #8
hvis jeg prøver at åben en en nøgle fra et andet sted virker det helt fint ... men når jeg prøver at åben noget i
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\
så virker det ikke
Avatar billede jaboy Nybegynder
15. maj 2013 - 14:42 #9
og ja jeg er (som du kunne se i billedt fra før)
Avatar billede jakobdo Ekspert
15. maj 2013 - 14:49 #10
Måske rettigheder?
Prøv at højreklik på Uninstall og se hvad den siger der ?
Avatar billede jaboy Nybegynder
15. maj 2013 - 20:21 #11
bruger har læse.
administrators og system har fuld kontrol.

Jeg har prøvet programmet på min hjemme pc, der virker det heller ikke
Avatar billede jakobdo Ekspert
15. maj 2013 - 21:21 #12
Men det forklarer jo ikke det virker på min ene maskine.
Og eftersom koden virker på andre nøgler, så må det jo være noget med rettigheder.

Jeg tror nemlig ikke jeg kan bidrage med mere til dit spørgsmål, da jeg ikke har set samme fejl selv.
Avatar billede jaboy Nybegynder
16. maj 2013 - 08:04 #13
Hey Jacob ... jeg har fundet problemet

Af en eller anden grund kan man ikke læse fra regdatabasen, hvis din pc er 64 bit og programmet er til 32 bit, som mit var.
(spørg mig ikke om hvorfor jeg så kunne læse nogen nøgler, for det ved jeg ikke)


Efter at have sat nogen indstillinger i 2010 Express, og lavet programmet til 64 bit virker det nu fint.

Du skal have megen tak fordi du forsøgte at hjælpe, og hvis du vil ha points må du gerne få det :)
Avatar billede jakobdo Ekspert
16. maj 2013 - 08:47 #14
Vi kan evt. dele. :o)
Avatar billede jakobdo Ekspert
16. maj 2013 - 10:46 #15
Takker for point.
Avatar billede arne_v Ekspert
17. maj 2013 - 02:04 #16
Hvis du fra et 32 bit program forsoeger at laese:
  "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver"
saa vil den faktisk forsoege at laese
  "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver"
derfor virker det hvis dit program koerer 64 bit.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester