|
|
| Auteur |
Bericht |
guido1
|
|
Onderwerp: Meldingen van Regedit
Geplaatst: 07 feb 2010 - 21:36
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 07 feb 2010 - 21:55
|
|
Moderator

Geregistreerd op: 11-mei-2009
Berichten: 637
Status: Offline
|
|
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 |
_________________ con\con
Stappen, keuzes en herhaling combineren is programmeren.
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 08 feb 2010 - 22:19
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 08 feb 2010 - 22:44
|
|
Moderator

Geregistreerd op: 11-mei-2009
Berichten: 637
Status: Offline
|
|
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 |
_________________ con\con
Stappen, keuzes en herhaling combineren is programmeren.
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 09 feb 2010 - 19:43
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 11 feb 2010 - 19:56
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 11 feb 2010 - 20:32
|
|
Moderator

Geregistreerd op: 11-mei-2009
Berichten: 637
Status: Offline
|
|
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. |
_________________ con\con
Stappen, keuzes en herhaling combineren is programmeren.
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 11 feb 2010 - 21:19
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 11 feb 2010 - 21:44
|
|
Moderator

Geregistreerd op: 11-mei-2009
Berichten: 637
Status: Offline
|
|
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 |
_________________ con\con
Stappen, keuzes en herhaling combineren is programmeren.
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 12 feb 2010 - 13:14
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 12 feb 2010 - 13:51
|
|
Moderator

Geregistreerd op: 11-mei-2009
Berichten: 637
Status: Offline
|
|
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 |
_________________ con\con
Stappen, keuzes en herhaling combineren is programmeren.
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 12 feb 2010 - 19:15
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 13 feb 2010 - 02:11
|
|
Moderator

Geregistreerd op: 11-mei-2009
Berichten: 637
Status: Offline
|
|
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 |
_________________ con\con
Stappen, keuzes en herhaling combineren is programmeren.
|
| |
|
|
|
 |
Vozzie
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 13 feb 2010 - 02:21
|
|
Moderator

Geregistreerd op: 11-mei-2009
Berichten: 637
Status: Offline
|
|
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 |
_________________ con\con
Stappen, keuzes en herhaling combineren is programmeren.
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: Meldingen van Regedit
Geplaatst: 13 feb 2010 - 17:48
|
|
In draf
Geregistreerd op: 24-mrt-2006
Berichten: 449
Status: Offline
|
|
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 |
|
|
| |
|
|
|
 |
|
|
|
|