VBiB/ACCB.net
Algemeen - Meldingen van Regedit
guido1 - 07 feb 2010 - 21:36
Onderwerp: Meldingen van Regedit
Hoi,
Ik maak in mijn project een .reg file aan om het register aan te passen. Ik gebruik volgende code om deze .reg file uit te voeren:Visual Basic code:
Private Sub Voer_REG_File_uit()
Try
Dim REG_Uitvoeren As New Process()
REG_Uitvoeren.StartInfo.FileName = HlpPath
REG_Uitvoeren.Start()
Do While Not REG_Uitvoeren.HasExited
System.Windows.Forms.Application.DoEvents()
Loop
Schrijf_melding("R0", "Registryfile verwerkt met succes")
Catch
Schrijf_melding("RN", "Registryfile verwerking mislukt")
End Try
End Sub
De twee meldingen die een normale REGEDIT geeft wil ik weg. Hoe moet ik dat doen?
Met "Schrijf_melding" wil ik melden of de .reg file goed is uitgevoerd. Maar zoals ik dat geschreven heb werkt dat niet want dan is het altijd goed uitgevoerd. Wie helpt mij uit de nood?
Bedankt op voorhand,
Guido
Vozzie - 07 feb 2010 - 21:55
Onderwerp: Re: Meldingen van Regedit
Hallo,
Over Regedit
Je kan ook op andere manieren waarden toevoegen aan het register. Via de Microsoft.Win32.Registry classes. Of als je toch een project hebt, je kan waarden toevoegen in je installer ook.(ClickOnce weet ik niet)
Over processen
In plaats van het lusje met doevents kan je Process.WaitForExit method gebruiken.
Dan heb je ook de Process.ExitCode property welk je kan controleren of het goed is uitgevoerd.
Verder, als je geen exe uitvoert kan je beter de ProcessStartInfo.UseShellExecute property op true zetten voor het starten vh process. Ook kan je dan met Verbs werken, "open" verb bijvoorbeeld.
Wil je dat het programma dat je uitvoert geen graphische interface geeft kan je kijken of daar argumenten voor zijn. Of je kan proberen met de process startup properties, daar kan je ProcessStartInfo.WindowStyle meegeven.
Je kan dus eens zoeken of er argumenten zijn voor a) regedit onzichtbaar te runnen. b) een .reg file onzichtbaar uit te voeren.
Groeten
guido1 - 08 feb 2010 - 22:19
Onderwerp: Re: Meldingen van Regedit
Dat is veel leesvoer, daar zal ik wel even zoet mee zijn. Maar dat zal wel iets voor volgende week zijn.
In alle geval fel bedankt.
Guido
Vozzie - 08 feb 2010 - 22:44
Onderwerp: Re: Meldingen van Regedit
Hallo,
Graag gedaan,...
Ik heb ondertussen de optie gevonden. Staat hier omschreven: http://support.microsoft.com/kb/310516
Wanneer gebruikers het REG-bestand uitvoeren, wordt het volgende bericht weergegeven:
Register-editor
Weet u zeker dat u de gegevens in pad naar REG-bestand aan het register wilt toevoegen?
Als de gebruiker op Ja klikt, wordt het volgende bericht weergegeven:
Register-editor
De gegevens in 'pad naar REG-bestand' zijn ingevoerd in het register.
Regedit.exe ondersteunt de schakeloptie /s om deze berichten niet weer te geven. Als u het REG-bestand bijvoorbeeld op de achtergrond (met de schakeloptie /s) wilt uitvoeren vanuit een batchbestand met een aanmeldingsscript, gebruikt u de volgende syntaxis:
regedit.exe /s pad naar REG-bestand
Probeer eens,... (heb deze code niet getest, dus ik weet niet of het zal werken, maar het zou zoiets moeten zijn)
Visual Basic code:
Dim theFile As String = "C:\temp.reg"
Dim process As Process = Process.Start("regedit.exe", "/s """ & theFile & """")
process.WaitForExit()
MsgBox process.ExitCode
Groeten
guido1 - 09 feb 2010 - 19:43
Onderwerp: Re: Meldingen van Regedit
Vozzie nog eens bedankt. Ik had al eens ingegeven "regedit /?" maar dat loste niet veel op.
Het uittesten zal voor volgende week zijn want ik ben niet thuis en kan dus niet aan mijn eigen pc.
Bedankt,
Guido
guido1 - 11 feb 2010 - 19:56
Onderwerp: Re: Meldingen van Regedit
Hoi Vozzie,
Ik ben terug thuis en jou voorbeeld uitgetest. Het voert de .reg file goed uit.
Maar ik heb wel een probleem: De ExitCode is altijd 0 ook indien de .reg file niet uitgevoerd. Ik heb dus geen controle over het resultaat.
Ik heb via Google terug gevonden dat reg.exe wel een exitcode terug geeft maar dat krijg ik niet werkend.
Iemand een oplossing?
Guido
Vozzie - 11 feb 2010 - 20:32
Onderwerp: Re: Meldingen van Regedit
Hallo,
Hoe start je het? Gebruik je de WaitForExit? Het process moet gestopt zijn voor je de exitcode opvraagt...
Misschien eens een andere manier van starten proberen...
Anders eens je code posten, als ik tijd heb en't niet uit het oog verlies probeer ik het hier wel eens.
Groeten.
guido1 - 11 feb 2010 - 21:19
Onderwerp: Re: Meldingen van Regedit
Hoi Vozzie,
Deze eerste code voert de reg file wel uit maar geeft geen correcte exitcode:Visual Basic code:
Dim process As Process = process.Start("regedit.exe", "/s """ & HlpPath & """")
process.WaitForExit()
MsgBox("process.ExitCode= " & process.ExitCode)
Google wist mij te vertellen dat ik reg.exe moest gebruiken en dat zou wel een correcte exitcode terug geven. Ik heb deze code gebruikt:Visual Basic code:
Dim process As Process = process.Start("reg.exe ", "import " & HlpPath)
process.WaitForExit()
MsgBox("process.ExitCode= " & process.ExitCode)
Maar dit krijg ik niet aan 't werken.
Ik zal wel ergens een fout maken maar waar?
Guido
Vozzie - 11 feb 2010 - 21:44
Onderwerp: Re: Meldingen van Regedit
Hallo
er staat een spatie achter "reg.exe". Misschien is het dat,...
Als er spaties in je filename staan zet je heb best tussen quotes.
probeer eens ...
Visual Basic code:
Dim process As Process = process.Start("reg.exe", "import """ & HlpPath & """")
process.WaitForExit()
MsgBox("process.ExitCode= " & process.ExitCode)
Groeten
guido1 - 12 feb 2010 - 13:14
Onderwerp: Re: Meldingen van Regedit
Hoi Vozzie,
Je hebt gelijk, die spatie was er teveel aan. De .reg file wordt nu wel uitgevoerd. Maar het probleem is hetzelfde als bij regedit. De exitcode is altijd 0 zelfs indien in de .reg file fouten instaan die beletten dat de file uitgevoerd wordt.
Ken je daar een oplossing voor?
Guido
Vozzie - 12 feb 2010 - 13:51
Onderwerp: Re: Meldingen van Regedit
Hallo,
Probeer eens met een niet bestaande filename, of een filename met fouten in,... Geeft hij dan ook nog 0 terug? Waarschijnlijk is het commando goed uitgevoerd en trekt hij zich geen fouten in de file aan.
Ik denk dat hij enkel een andere waarde geeft als er een fout in je argumenten zitten, onafhankelijk van de file...
Je zou kunnen de file zelf inlezen, interpreteren en uitvoeren, ...
Groeten
guido1 - 12 feb 2010 - 19:15
Onderwerp: Re: Meldingen van Regedit
Hoi Vozzie,
De process.ExitCode heeft alleen maar betrekking op de aanwezigheid van de .reg file. Is die file er niet of leeg dan krijg ik een code=1 is ze er wel dan maakt de inhoud er van niks uit, ik krijg altijd code=0. Ik ben er dus niks mee vooruit.
Het was juist om de zaken eenvoudig te houden dat ik deze methode gekozen had. Ik zal dan maar genoegen moeten nemen met de twee meldingen van regedit.exe zoals ik in de start van dit topic reeds melde.
Toch bedankt voor het meedenken. Als er iemand een idee heeft dan hoor ik het graag.
Guido
Vozzie - 13 feb 2010 - 02:11
Onderwerp: Re: Meldingen van Regedit
Hallo,
Wat je nog zou kunnen doen is de Error output lezen, als die er is...
Krijg je als je het uitvoert via commandline met een "foute file" output terug in het "dos venster"?
Anders zou je die kunnen uitlezen uit vanuit je programma,....
Groeten
Vozzie - 13 feb 2010 - 02:21
Onderwerp: Re: Meldingen van Regedit
Hallo,
Nope, "The operation completed successfully" zit in de output buffer. In de error buffer zit niks.
Visual Basic code:
Dim fileName As String = "c:\temp.reg"
IO.File.WriteAllText(fileName, "gnar gnar")
Dim startInfo As New ProcessStartInfo
startInfo.UseShellExecute = False
startInfo.FileName = "reg.exe"
startInfo.Arguments = "IMPORT """ & fileName & """"
startInfo.RedirectStandardError = True
startInfo.RedirectStandardOutput = True
Dim process As Process = process.Start(startInfo)
MsgBox(process.StandardOutput.ReadToEnd())
MsgBox(process.StandardError.ReadToEnd())
process.WaitForExit()
MsgBox(process.ExitCode)
Groeten
guido1 - 13 feb 2010 - 17:48
Onderwerp: Re: Meldingen van Regedit
Hoi Vozzie,
Helaas, allemaal hopeloos. Het maakt geen enkel verschil in de meldingen. In de eerste komt altijd in: "De bewerking is voltooid". De tweede is zoal je schreef altijd leeg en de derde altijd 0 zoals we dat al wisten van de vorige probeersels.
Toch bedankt voor de hulp.
Guido
Tijden zijn in GMT + 1 uur
PNphpBB2 © 2003-2007