Solved

vbscript doesn't run on first logon

Posted on 2006-06-18
6
651 Views
Last Modified: 2009-07-29

This script runs with a group policy and locks the desktop down. I noticed in frequent cases that it leaves the control panel in the Start Menu either though I have it hidden in the script. When i logoff and log back on it finally disappears.
Any ideas?

Option Explicit

'Declare variables
Dim WSHShell, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, q, p, z, NN, FS
Dim itemtype, errnum
Set WSHShell = WScript.CreateObject("WScript.Shell")


b = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
b = b & "NoSetTaskbar" 'This restriction removes the Taskbar and Start Menu item from the Control Panel, and it also removes the Properties item from the Start menu context menu

d = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
d = d & "NoSimpleStartMenu" 'This restriction forces users to use the classic Windows start menu, instead of the new format introduced with Windows XP.

e = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
e = e & "NoTrayContextMenu" 'This setting removes the context menus (right click on the taskbar) for the system tray, including the Start button, Tab control, and Clock.

f = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
f = f & "NoFind" 'This restriction removes the Search feature from the Start Menu.

g = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
g = g & "NoDriveTypeAutoRun" 'Doesn't auto run CD

h = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
h = h & "NoRun" 'No Run menu

i = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
i = i & "NoSMHelp" 'No Help Menu

j = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
j = j & "NoRecentDocsMenu" 'doesn't cache recent docs menu

k = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
k = k & "StartMenuLogOff" 'no logoff

l = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
l = l & "NoCommonGroups"

m = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
m = m & "NoSetFolders" 'This restriction removes the Control Panel, Printers and Network Connection settings from the Start menu. If the Taskbar settings are also hidden it causes the Settings menu to be completely removed.

o = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
o = o & "NoDrives" 'NO C drive

p = "HKCU\Software\Policies\Microsoft\Internet Explorer\Restrictions\"
p = p & "NoBrowserContextMenu"

q = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\"
q = q & "NoDispCPL" 'This option disables the display settings control panel icon, and stops users from accessing any display settings

z = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"
z = z & "NoViewContextMenu" 'no right click on desktop


itemtype = "REG_DWORD"

'-------------------
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (d)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite d, 0, itemtype
End If

'-------------------
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (p)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite p, 0, itemtype
End If

'------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (k)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite k, 0, itemtype
End If

'------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (z)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite z, 0, itemtype
End If

'------------------
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (m)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite m, 0, itemtype
End If

'-------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (i)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite i, 0, itemtype
End If

'------------------
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (j)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite j, 0, itemtype
End If

'-------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (b)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite b, 0, itemtype
End If

'--------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (e)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite e, 0, itemtype
End If

'--------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (o)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite o, 0, itemtype
End If

'--------------------
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (f)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite f, 0, itemtype
End If

'---------------------
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (h)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite h, 0, itemtype
End If

'--------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (g)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite g, 0, itemtype
End If

'--------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (q)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite q, 0, itemtype
End If
'--------------------

Err.Clear
On Error Resume Next
n = WSHShell.RegRead (l)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for NoFolderOptions with value 0
      WSHShell.RegWrite l, 0, itemtype
End If
'--------------------

'If the key is present, or was created, it is toggled
'Confirmations can be disabled by commenting out
'the two MyBox lines below


NN = 0
n = 1
a = 12
c = 181

WSHShell.RegWrite k, NN, itemtype
WSHShell.RegWrite l, n, itemtype
WSHShell.RegWrite i, n, itemtype
WSHShell.RegWrite j, n, itemtype
WSHShell.RegWrite d, n, itemtype
WSHShell.RegWrite p, n, itemtype
WSHShell.RegWrite z, n, itemtype
WSHShell.RegWrite m, n, itemtype
WSHShell.RegWrite b, n, itemtype
WSHShell.RegWrite e, n, itemtype
WSHShell.RegWrite o, a, itemtype
WSHShell.RegWrite f, n, itemtype
WSHShell.RegWrite g, c, itemtype
WSHShell.RegWrite h, n, itemtype
WSHShell.RegWrite q, n, itemtype
WSHShell.RegWrite m, n, itemtype
0
Comment
Question by:Fubyou
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 11

Accepted Solution

by:
pratap_r earned 400 total points
ID: 16932257
This happens when there is a race condition between explorer.exe(shell) and your script. Try killing explorer.exe at the end of your script and restarting it.
0
 
LVL 58

Assisted Solution

by:Julian Hansen
Julian Hansen earned 50 total points
ID: 16932428
Just a thought ...

One thing you could try is to create a key in the user registry to run the vbscript as your shell
HKCU/Software/Microsoft/Windows NT/CurrentVersion/Winlogon/Shell=yourscript.vbs

The last thing your script does is to start explorer.

Explorer checks the contents of the same key but in the Machine Registry - if it finds itself there and no other instances of explorer are running it will start in shell mode.

This should allow your script to finish running before the shell starts.

0
 
LVL 11

Expert Comment

by:pratap_r
ID: 16932458
thats a good hack :), just make sure the script doesn't fail in the middle, otherwise the user will end up without a shell.
0
Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

 
LVL 58

Expert Comment

by:Julian Hansen
ID: 16932528
you can get around that too - put in an app that first statrs the script - waits for it to finish - then starts the shell.

We have done this quite a bit for getting around explorer induced problems.
0
 

Author Comment

by:Fubyou
ID: 16942406
what are the lines to kill explorer.exe not that I couldn't google it, of course..
to lazy
0
 
LVL 2

Assisted Solution

by:TiwariVikas
TiwariVikas earned 50 total points
ID: 17018251
Try the following code to kill explorer.exe...

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'Explorer.exe'")

For Each objProcess in colProcessList
    objProcess.Terminate()
Next

Regards,
Vikas.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A short article about problems I had with the new location API and permissions in Marshmallow
If you’re thinking to yourself “That description sounds a lot like two people doing the work that one could accomplish,” you’re not alone.
An introduction to basic programming syntax in Java by creating a simple program. Viewers can follow the tutorial as they create their first class in Java. Definitions and explanations about each element are given to help prepare viewers for future …
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

617 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question