Not directly; because you're trying to manipulate machine settings using a user variable.
Your best bet is to use a log in script for the account in question which applies machine settings on a user basis.
It's not the easiest thing to do; here's a complex example :
'######################################
'# getComputer returns this computers
'# name.
Function getComputer()
Set WSHNetwork = WScript.CreateObject("WScript.Network")
strComputer = ""
While strComputer = ""
strComputer = WSHNetwork.ComputerName
Wend
getComputer = strComputer
End Function
'######################################
'# getUser returns the current user.
Function getUser()
Set WSHNetwork = WScript.CreateObject("WScript.Network")
strUser = ""
While strUser = ""
strUser = WSHNetwork.UserName
Wend
getUser = strUser
End Function
'######################################
'# getComputerADsPath returns the AD
'# path of the current computer.
Function getComputerADsPath()
computer = getComputer()
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"
;" & _
"(&(objectCategory=Computer)(cn=" & computer & "));" & _
"ADsPath;subtree"
Set objRecordSet = objCommand.Execute
While Not objRecordSet.EOF
strADsPath = objRecordSet.Fields("ADsPath")
Set objComputer = GetObject(strADsPath)
objRecordSet.MoveNext
Wend
objConnection.Close
getComputerADsPath = strADsPath
End Function
'######################################
'# regTest returns the result of a
'# regular expression pattern test.
Function regTest(pattern, sStr)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = pattern
regEx.IgnoreCase = True
regTest = regEx.Test(sStr)
End Function
'######################################
'# mapDrive maps a network share to a
'# drive letter.
Sub mapDrive(drive, share)
Set Net = CreateObject("WScript.Network")
Set colDrv = Net.EnumNetworkDrives
For i = 0 To colDrv.Count - 1 Step 2
If (colDrv(i) = drive) Then
Net.RemoveNetworkDrive drive
End If
Next
Net.MapNetworkDrive drive, share
End Sub
'######################################
'# mkShortcut creates a shortcut on the
'# Desktop.
Sub mkShortcut(lnkName, path, param)
Set wsShell = CreateObject("WScript.Shell")
targetFolder = wsShell.SpecialFolders("Desktop")
Set shortCut = wsShell.CreateShortcut(targetFolder & _
"\" & lnkName & ".lnk")
shortCut.TargetPath = path
shortCut.Arguments = param
shortCut.Save
End Sub
'######################################
'# isMember returns true if user is
'# member of the group.
Function isMember(strGroup, strUser, strDomain)
Dim objMember, objGroup
On Error Resume Next
' Initialize vars
' Get reference to scanned group, if it can connect, it is a group
Set objGroup = GetObject("WinNT://" & strDomain & "/" & _
strGroup & ",group")
' Is the given scanned group really a group?
' Check error of the line above
If Err.Number = 0 Then
' Is the searched user a direct member of the group?
' No recursive checking here
isMember = objGroup.isMember("WinNT://" & strDomain & "/" & _
strUser)
If Not isMember Then
' Search the nesting groups
For Each objMember In objGroup.Members
' Recursive funtion call
isMember = isMember(objMember.Name, strUser, _
strDomain)
' Membership found, exit loop
If isMember Then Exit For
Next ' For Each objMember In
'objGroup.Members
End If ' If Not IsMember
Else ' If Err.Number = 0
' Can't search in a user -> no group
isMember = False
End If ' If Err.Number = 0
On Error Goto 0
End Function
'######################################
'# setUserSettings set user settings in
'# the registry database
Sub setUserSettings()
HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
' Slå screen saver fra.
strKeyPath = "Control Panel\Desktop"
objReg.CreateKey HKEY_CURRENT_USER, strKeyPath
ValueName = "ScreenSaveActive"
strValue = "0"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue
' Sæt start og search page i Internet Explorer
strKeyPath = "Software\Microsoft\Internet\Explorer\Main"
objReg.CreateKey HKEY_CURRENT_USER, strKeyPath
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, "Start Page", "http://www.kk.dk"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, "Search Page", "http://www.kk.dk"
End Sub
'####################################################################
'# Main
'######################################
'# Undersøg hvilken OU denne computer
'# er placeret i.
computerPath = getComputerADsPath
' Generer WScript.Shell objekt til senere brug.
Set wsShell = CreateObject("WScript.Shell")
'######################################
'# Maskinerne i byrådssalen.
If regTest("ou=Klienter i salen,ou=Byrådssalen", computerPath) Then
' Map Minolta netværks printeren på Loggia.
Set Net = CreateObject("WScript.Network")
Net.AddWindowsPrinterConnecti on "\\okfprt1\brsal_minolta"
Net.SetDefaultPrinter "\\okfprt1\brsal_minolta"
' Slet alle filer på skrive bordet.
targetFolder = wsShell.SpecialFolders("Desktop")
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(targetFolder & "\*"), True
' Ret registry hvis maskinen er placeret under Byrådssalen.
If regTest("ou=Klienter i salen,ou=Byrådssalen", computerPath) Then
setUserSettings
End If
' Ordstyrer.
If regTest("ou=Ordstyrer,ou=Afstemnings klienter på podiet,ou=Klienter i salen,ou=Byrådssalen", _
computerPath) Then
mapDrive "H:", "\\votebox1\podiet$"
mkShortcut "Attend ordstyrer", "H:\AttendSek.exe", _
"H:\AttendOrdstyrer.ini"
If Not isMember("PermAfstemSetup", getUser, "of.kk.dk") Then
wsShell.Run "H:\AttendSek.exe H:\AttendOrdstyrer.ini"
End IF
End If
' 1. sekretær.
If regTest("ou=1. sekretær,ou=Afstemnings klienter på podiet,ou=Klienter i salen,ou=Byrådssalen", _
computerPath) Then
mapDrive "H:", "\\votebox1\podiet$"
mkShortcut "Attend 1. sekretær", "H:\AttendSek.exe", _
"H:\Attend1Sekretær.ini"
If Not isMember("PermAfstemSetup", getUser, "of.kk.dk") Then
wsShell.Run "H:\AttendSek.exe H:\Attend1Sekretær.ini"
End IF
End If
' 2. sekretær.
If regTest("ou=2. sekretær,ou=Afstemnings klienter på podiet,ou=Klienter i salen,ou=Byrådssalen", _
computerPath) Then
mapDrive "H:", "\\votebox1\podiet$"
mkShortcut "Attend 2. sekretær", "H:\AttendSek.exe", _
"H:\Attend2Sekretær.ini"
If Not isMember("PermAfstemSetup", getUser, "of.kk.dk") Then
wsShell.Run "H:\AttendSek.exe H:\Attend2Sekretær.ini"
End IF
End If
' Almindelige afstemingsklienter i salen.
If regTest("ou=Afstemnings klienter for medlemmer,ou=Klienter i salen,ou=Byrådssalen", _
computerPath) Then
mapDrive "H:", "\\votebox1\medlem$"
mkShortcut "Attend", "H:\AttendMed.exe", ""
End If
' Maskinen i teknik rummet.
If regTest("ou=Teknik rummet,ou=Byrådssalen", _
computerPath) Then
mapDrive "H:", "\\votebox1\teknik$"
mkShortcut "Attend teknik", "H:\AttendSts.exe", ""
End If
'######################################
'# Hvis brugeren har setup rettigheder
'# så map Afstemningsshare og tilføj
'# shortcut.
If isMember("PermAfstemSetup", getUser, "of.kk.dk") Then
mapDrive "S:", "\\votebox1\afstemningssystemet$"
mkShortcut "Attend konfiguration", "S:\Tools\", ""
End If
End If