Solved

vbscript doesn't run on first logon

Posted on 2006-06-18
6
643 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
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 55

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
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 55

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

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
recursion example 16 141
How to insert gas or chemical names in SQL server. For e.g. CO2 to CO₂. 5 78
Why use this lambda? 12 40
Create .bat File 16 37
A short article about a problem I had getting the GPS LocationListener working.
Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
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 …

820 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