PDA

View Full Version : [VBS] non so una dannata cicca ma non dovrebbe essere difficile per voi :D


Niphlod
01-05-2006, 17:00
dato che a quanto pare non esiste un programma che nasconda e mostri le icone sul desktop con una command-lineho trovato in giro per internet questo vbs ...... io non so una cicca di programmazione quindi chiedo qui a voi .... c'è il modo di disabilitare le finestre di consenso ? vorrei semplicemente che lo script venisse eseguito una volta lanciato senza bisogno delle conferme.....



'Enable or Disable Desktop Icons

Message = "To work correctly, the script will close" & vbCR
Message = Message & "and restart the Windows Explorer shell." & vbCR
Message = Message & "This will not harm your system." & vbCR & vbCR
Message = Message & "Continue?"

X = MsgBox(Message, vbYesNo, "Notice")

If X = 6 Then

On Error Resume Next

Dim WSHShell, n, MyBox, p, t, errnum, vers
Dim itemtype
Dim enab, disab, jobfunc

Set WSHShell = WScript.CreateObject("WScript.Shell")
p = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDesktop"

itemtype = "REG_DWORD"

enab = "ENABLED"
disab = "DISABLED"
jobfunc = "Desktop Icons are now "

t = "Confirmation"
Err.Clear
n = WSHShell.RegRead (p)
errnum = Err.Number

if errnum <> 0 then

WSHShell.RegWrite p, 0, itemtype
End If


If n = 0 Then
n = 1
WSHShell.RegWrite p, n, itemtype
Mybox = MsgBox(jobfunc & disab & vbCR, 4096, t)
ElseIf n = 1 then
n = 0
WSHShell.RegWrite p, n, itemtype
Mybox = MsgBox(jobfunc & enab & vbCR, 4096, t)
End If


Set WshShell = Nothing

On Error GoTo 0

For Each Process in GetObject("winmgmts:"). _
ExecQuery ("select * from Win32_Process where name='explorer.exe'")
Process.terminate(0)
Next

MsgBox "Finished." & vbcr & vbcr , 4096, "Done"

Else

MsgBox "No changes were made to your system." & vbcr & vbcr, 4096, "User Cancelled"

End If




azzie anticipate per ogni suggerimento (se avete un exe già bello che fatto che faccia quello che fa questo vbs indicate pure :D )

andbin
01-05-2006, 21:38
Ho fatto qualche "taglio" allo script che hai postato. Ne ho fatti 2 di script: uno per mostrare e l'altro per nascondere le icone.

MostraIcone.vbs
'-------- Mostra icone desktop --------
Dim WshShell, Name

Set WshShell = WScript.CreateObject("WScript.Shell")

Name = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDesktop"

WshShell.RegWrite Name, 0, "REG_DWORD"

For Each Process in GetObject("winmgmts:").ExecQuery("select * from Win32_Process where name='explorer.exe'")
Process.terminate(0)
Next

NascondiIcone.vbs
'-------- Nascondi icone desktop --------
Dim WshShell, Name

Set WshShell = WScript.CreateObject("WScript.Shell")

Name = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDesktop"

WshShell.RegWrite Name, 1, "REG_DWORD"

For Each Process in GetObject("winmgmts:").ExecQuery("select * from Win32_Process where name='explorer.exe'")
Process.terminate(0)
Next
Sono praticamente uguali (cambia solo il 0 o 1 da scrivere nel valore).

In teoria dovrebbero funzionare. Io ho cercato di provarli sul mio pc (Windows 2000) ma .... ho avuto un problema: la chiave Policies\Explorer sembra essere di sola lettura, cioè non modificabile/scrivibile.
Non so (e non mi ricordo) se avevo smanettato io sul mio pc e fatto qualcosa o se c'è qualche altra policy che mi impedisce di scrivere in quella chiave.

Tu prova, poi fammi sapere.

Tra l'altro lo script fa in modo di "terminare" il processo di explorer, che in teoria dovrebbe ripartire, rileggendo quindi la nuova impostazione.
Far "morire" explorer non mi sembra (tecnicamente) una buona cosa.

Niphlod
02-05-2006, 09:19
ah guarda, sul fatto che "tecnicamente" non sia una cosa buona, mi trovi d'accordo, ma non c'è altra scelta, a quanto pare,




tra l'altro, funziona tutto a dovere, ti ringrazio infinitamente :D

resto cmq in attesa di qlcn che magari risolve con un programmino o senza far ripartire explorer

azzie mille sul serio ancora