Avatar billede ajvm Nybegynder
06. oktober 2004 - 12:09 Der er 3 kommentarer og
1 løsning

Læse registry værdi , man ikke kender navnet på

Hej
I VB kan man læse en registry værdi f.eks sådan:

Set regedit = CreateObject("WScript.Shell")
CompName = regedit.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName")

Men hvis man nu ikke kende key-names , f.eks hvilke ligger under

HKEY_CURRENT_USER\Software\  ?



Kan man skabe en liste / array med alle sub-keys  ?

mvh Anders Mortensen
Avatar billede tofte Juniormester
14. oktober 2004 - 12:10 #1
Dette script gemmer alle undernøgler og værdier i en fil. Det kan selvf. lavs om, så den gemmer dem i et array, men ideen burde være der:
const HKEY_LOCAL_MACHINE = &H80000002
const REG_SZ = 1
const REG_EXPAND_SZ = 2
const REG_BINARY = 3
const REG_DWORD = 4
const REG_MULTI_SZ = 7
Const ForAppending = 8
strComputer = "."

sub wr(msg)
    objTextFile.WriteLine(msg)
end sub

sub writeReg(strKeyPath)
    lcr= oReg.EnumKey(HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys)
    If lsc = 0 And IsArray(arrSubKeys) Then
    For Each subkey In arrSubKeys
        wr strKeyPath&"\"&subkey
        writeReg(strKeyPath&"\"&subkey)
    Next
    end if
    oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath,arrValueNames, arrValueTypes
    IF IsArray(arrValueNames) then
        For i=0 To UBound(arrValueNames)
            Select Case arrValueTypes(i)
                    Case REG_SZ
                  vtype= "String"
                    Case REG_EXPAND_SZ
                        vtype="Expanded String"
                    Case REG_BINARY   
                        vtype="Binary"
                    Case REG_DWORD
                        vtype="DWORD"
                    Case REG_MULTI_SZ
                        vtype="Multi String"
            End Select
            wr strKeyPath&"\"&arrValueNames(i)&": Type="&vtype
        Next
    end if
end sub


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("c:\reg.txt", ForAppending, True)

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa"

writeReg(strKeyPath)
'wrr()
objTextFile.Close
Avatar billede tofte Juniormester
14. oktober 2004 - 12:11 #2
du skal bare ænder strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa" til den nøgle du ønsker at se på.
Avatar billede ajvm Nybegynder
18. oktober 2004 - 10:11 #3
Hej Tofte, jeg har ikke haft tid at afprøve dit svar , men det set fornuftigt ud.
mvj AJVM
Avatar billede ajvm Nybegynder
11. august 2005 - 08:40 #4
Det virker ganske udemærket
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