Prova così:

Shell ("shutdown -s -t 0 -f")

Oppure, ancora meglio, utilizza le API di sistema così:

Dichiarazione in un modulo:
Private Declare Function ExitWindowsEx Lib "user32" _
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long


Nel form:

Dim usa As Long

usa=ExitWIndows(PARAMETRO)

Questi sono i parametri che puoi usare:

EWX_LOGOFF
EWX_SHUTDOWN
EWX_REBOOT
EWX_FORCE
EWX_POWEROFF
EWX_FORCEIFHUNG

ESEMPIO:

Dim usa As Long

private sub cmdSpegni_click()
usa=ExitWindowsEx(EWX_SHUTDOWN)
end sub

----------------------
Cmq non hai danneggiato nulla, la funzione shell avvia solo programmi, non modifica nulla...

Ti consiglio di utilizzare le API di sistema che vanno bene con tutti i sistemi winzozz.. (se sei sotto win98 la funzione shell(shutdown bla bla bla) non ti funzionerebbe poichè su windows98 sarebbe shell("C:\windows\rundll32.exe user,exitwindow") .....

Spero di essere stato chiaro.
Byez