Avatar billede collin Nybegynder
21. august 2006 - 10:03 Der er 1 kommentar og
1 løsning

lister under nøgle fra reg databasen

Kan man bruge en script til at finde, liste, og tælle undernøglerne til en givne nøgle i registreringsdatabasen? RegRead synes ikke at kunne gøre det.
Avatar billede ejvindh Ekspert
21. august 2006 - 12:00 #1
Du skal tilpasse de første 2 linier til dit specifikke ønske. Derudover kan du vælge at fjerne nogle af tællerne, hvis du KUN vil vide, hvor mange underNØGLER der er (og altså ikke vil vide noget om, hvor mange værdier, der er i disse nøgler)

Det virker på en XP-maskine, og sandsynligvis også på en Win2k maskine. Jeg er lidt mere usikker på tidligere styresystemer, men det vil i hvert fald kunne fixes, hvis det også ønskes.

======================================================
txtFilepath = "regexp.txt"
regChkPath = "HKEY_CURRENT_USER\Software\ASProtect"

Dim Wshshell
Set WshShell = Wscript.CreateObject("Wscript.Shell")

Dim objFSO, objTextFilein
Dim sReadLine
Dim win, LineCount, subkey, value, defvalue

Set objFSO = CreateObject("Scripting.FileSystemObject")
Win = objFSo.GetSpecialFolder(0)

return=WshShell.Run(win & "\Regedit.exe /e " & txtFilepath & " " & regChkPath, 1, true)
Set objTextFilein = objFSO.OpenTextFile(txtFilepath, 1,, -1)

LineCount = 0
subkey = 0
value = 0
defvalue = 0
sReadLine = objTextFilein.ReadLine

Do While Not objTextFilein.AtEndOfStream
  sReadLine = objTextFilein.ReadLine
  If Left(sReadLine, 1)  = "[" then
    subkey = subkey + 1
  Elseif Left(sReadLine, 1)  = chr(34) then
    value = value + 1
  Elseif Left(sReadLine, 1)  = "@" then
    defvalue = defvalue + 1
  End If
  LineCount = LineCount + 1
Loop

objTextFilein.Close

msgbox "Antal undernøgler: " & subkey & chr(13) & "Antal værdier (inkl. definerede standardværdier): " & value + defvalue
Avatar billede collin Nybegynder
22. august 2006 - 19:28 #2
OK - mange tak. Det havde jeg ikke tænkt på - og det virker glimrende. Jeg skulle bare lave nogle små tilføjelse for også at få navnene med på nøglerne. Men jeg undres over at WSH ikke har en kommando der direkt klarer en så simpel operation. Mit mål er at lave en script som jeg kan bruge til at sikre på et netværk at uanset hvor jeg logger på, den maskine jeg pt arbejder med vil, som standard, vælge den lokal printer hvis der findes en. Eksemplevis Corels gamle PerfectScript kan gøre det således:

=============================================================================

lp="standard"
PrinterList = RegistryOpenKey(LocalMachine!; "System\CurrentControlSet\Control\Print\Printers\")
NumPrinters := RegistryQueryKeyCount (Hkey: PrinterList)
If(NumPrinters=0)quit endif

fornext(ps;1;NumPrinters)
    tweak=RegistryOpenKey(LocalMachine!;"System\CurrentControlSet\Control\Print\Printers\")
    tweak=RegistryEnumKey(tweak;ps)
    tweak=RegistryOpenKey(LocalMachine!;"System\CurrentControlSet\Control\Print\Printers\"+tweak)
    If(strleft(RegistryQueryValue(tweak;"Port");3)="USB" OR strleft(RegistryQueryValue(tweak;"Port");3)="LPT")
    lp=ps
    endif
endfor

If(lp="standard")
    messagebox(x;"Besked";"Ingen lokal printer til rådighed. Ingen ændringer foretaget i printer indstillinger.")
    quit
endif

vLocalPrinter=RegistryEnumKey(tweak;lp)

vWinDevice=RegistryOpenKey(CurrentUser!;"Software\Microsoft\Windows NT\CurrentVersion\Windows")
vDevice=RegistryOpenKey(CurrentUser!;"Software\Microsoft\Windows NT\CurrentVersion\Devices")
neo=RegistryQueryValue(vDevice;vLocalPrinter)
messagebox(x;"Message";neo)

SetKey := RegistrySetValue(vWinDevice;"Device"; vLocalPrinter+","+neo;String!)


========================================================================

Denne script går direkt ind og hente nøglerne fra regbasen og skriver den ønskede værdi ind ifølge de oplysninger den samle ind. Ingen behov for lægge oplysningen ud omkring en tekstfil for så at hente dem ind igen ad sammen vej. Men ak! Hvor er der et system som stadig har god gamle PS. Din ide er dog brugbare så tak for den igen.
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
Kurser inden for grundlæggende programmering

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