Newsgroup: it.comp.lang.visual-basic
Titolo: Registro di Windows e vbs

Ciao a tutti,
sono nuovo del gruppo.
Volevo chiedervi se esiste un modo per controllare se esiste una chiave
di registro utilizzano vbs (tipo if exist...)
Grazie a tutti


http://www.google.com/search?q=vbscript+registry
-- 
ciao, hal

 di registro utilizzano vbs (tipo if exist...)
se e' una specifica e' anche semplice .. si puo anche
fare cose piu complesse :
 set oShell = CreateObject("WScript.Shell")
bKey = oShell.RegRead("HKCR\VBSFile\DefaultIcon\")
sLogFile = "C:\windows\temp\ICO.LOG"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oLogFile = oFSO.OpenTextFile(sLogFile, 8, True, 0)
        oLogFile.WriteLine bKey
Wscript.Echo bKey
If bKey = "C:\WINDOWS\WScript.exe,2" then
oShell.run"calc"
else
Msgbox "None"
end if
http://www.google.it/search?hl=it&q=wsh%2BRegRead&meta=
http://download.microsoft.com/download/winscript56/Install/5.6/W982KMeXP/EN-US/scrdoc56en.exe
e' il Script56.chm   con vari esempi pratici
--
Fosco

Grazie ragazzi...
Per Fosco...avevo gia' provato ad usare RegRead ma se la chiave non
esiste
l'esecuzione dello script restituisce un errore
"Impossibile aprire la chiave del Registro di sistema ... per la
lettura."
A me servirebbe proprio andare a controllare nel registro se una chiave
specifica
esiste o no.
Grazie
b

"burns"
adesso non ho tempo di fare dei test prova questo
If IsMSJVMInstalled Then
    WScript.Echo "MS JVM is installed."
Else
    WScript.Echo "MS JVM is not installed."
End If
Function IsMSJVMInstalled
    Dim oShell, sRegValue, RegReadReturn
    Set oShell = CreateObject("WScript.Shell")
    sRegValue = _
       "HKCR\CLSID\{08B0E5C0-4FCB-11CF-AAA5-00401C608500}\InstalledVersion\"
    IsMSJVMInstalled = True  ' init value
    On Error Resume Next
    RegReadReturn = oShell.RegRead(sRegValue)
    If Err.Number <> 0 Then
      IsMSJVMInstalled = False
    End if
    On Error Goto 0
End Function
--
Fosco

 lettura."
A memoria ci avevo provato con qualcosa di simile
anche io ... e (almeno per me') NON c'e' stata soluzione
--
Fosco

"Fosco"
adesso mi scade la connessione se trono qualcosa
domani la posto
// regexample.wsf
// run from the command line as "cscript regexample.wsf"
<package>
<job>
<script langauge="JScript">
    try
    {
        var WshShell = WScript.CreateObject("WScript.Shell");
        var Value = WshShell.RegRead("HKCU\\mytest\\string");
        if (Value != "hello")
        {
            WshShell.RegWrite("HKCU\\mytest\\string", "hello", "REG_SZ");
        }
    }
    catch(e)
    {
        if (e instanceof Error)
        {
            WScript.StdErr.Writeline("Terminated by Exception Error: " +
e.description);
        }
        else
        {
            WScript.StdErr.Writeline("Terminated by Exception: " +
e.toString());
        }
        WScript.Quit(1);
    }
</script>
</job>
</package>

Grazie Fosco, il primo esempio che mi hai passato funziona!
Grazie tante!
b

specifica esiste o no.
se non hai risolto posta la key che devi leggere ..
Un'altra soluzione per scavalcare l'errore sarebbe esportare la key
(o tutta la hiv come da esempio qui sotto) in un file temporaneo e poi
leggerlo con il FSO ... ecco un esempio di Toiger Baken
(lascio il file temporaneo cosi puoi vedere cosa esporta)
'Script below works for me (using HKEY_LOCAL_MACHINE
'instead of HKEY_CURRENT_USER because I had the IconUnderline
'value only under HKEY_LOCAL_MACHINE).
Const OpenAsASCII      =  0
Const FailIfNotExist   =  0
Const ForReading       =  1
sKeyPath = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\"& _
"Windows\CurrentVersion\Explorer"
sTextToLookFor = """IconUnderline""=hex(0):"
Set oShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
' get a temporary registry file name
sTF = oFSO.GetSpecialFolder(2).ShortPath & "\" & oFSO.GetTempName
msgbox "il file esportato e' in   " & sTF
' export the registry key to a file
sCmd = "regedit.exe /S /E:A """ & sTF & """ " & """" & sKeyPath & """"
oShell.Run sCmd, 0, True
Set fFile = oFSO.OpenTextFile(sTF, ForReading, _
                    FailIfNotExist, OpenAsASCII)
sValue = ""
  'Parse the text file
Do While Not fFile.AtEndOfStream
   sLine = fFile.Readline
   If LCase(Left(sLine, 71)) = LCase("[" & sKeyPath & "\") Then
     ' we have reached a subkey, time to bail out
     Exit Do
   End If
   If LCase(Left(sLine, 23)) = LCase(sTextToLookFor) Then
     sValue = Mid(sLine, 24)
     Exit Do
   End If
Loop
fFile.Close
' delete temp file >>>>  lo tolgo cosi si vede l'output
''''''''''''''oFSO.DeleteFile sTF
If sValue <> "" Then
   WScript.Echo "Value is: " & sValue
Else
   WScript.Echo "No value found"
End If
--
Fosco

 "burns"
PS:
perche' non provi con VB .. :
'> trying to place code in sub-main to check and see
'> if a REGISTRY KEY exists  before program loads.
'> Depending on that existance is what determines program
'> behavior..
'Attempt to open it with RegOpenKey[Ex]() and see if it returns a valid key or not:
'***
Private Declare Function RegOpenKey Lib "AdvAPI32.dll" Alias _
"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "AdvAPI32.dll" _
(ByVal hKey As Long) As Long
Private Const HKEY_LOCAL_MACHINE As Long = &H80000002
Private Const ERROR_SUCCESS As Long = 0&
Private Function RegKeyExists(ByVal inHKey As Long, ByRef _
inSubKey As String) As Boolean
    Dim hKey As Long
RegKeyExists = RegOpenKey(inHKey, inSubKey, hKey) = ERROR_SUCCESS
    If (hKey) Then Call RegCloseKey(hKey)
End Function
Private Sub Form_Load()
    Debug.Print RegKeyExists(HKEY_LOCAL_MACHINE, _
    "SOFTWARE\Microsoft\Windows")
End Sub
'***
'    Mike
' - Microsoft Visual Basic MVP -
'E -Mail: EDais@ 
mvps.org
'WWW: 
Http://EDais.mvps.org/
--
Fosco

 Grazie tante!
Di niente ... gli altri 2 post li avevo fatti off line  ... e non
avevo visto che avevi risolto .. dagli un'occhiata comunque
--
Fosco