Dim wshShell, fileSys, objEnv
Dim homeShare
Dim workstationNamePath, workstationNameFile, workstationName
Dim rdpPath, rdpFile, rdp
Dim lnkPath, lnkFile, lnkApp, lnkAppFolder, lnkAppFolderItem
Wscript.Timeout = 120
' Declare 0 length string for later comparison
workstationName = ""
Set wshShell = WScript.CreateObject("WScript.Shell")
Set fileSys = CreateObject("Scripting.FileSystemObject")
Set lnkApp = CreateObject("Shell.Application")
Set objEnv = WshShell.Environment("PROCESS")
homeShare = objEnv("HOMESHARE")
'If homeshare is invalid leave the program
If Not fileSys.FolderExists(homeShare) Then
Wscript.Quit
End If
workstationNamePath = homeShare + "\workstationName.txt"
' Read or Write the workstation Name file and set workstationName to cached result
If not fileSys.FileExists(workstationNamePath) Then
' Create the file
set workstationNameFile = fileSys.CreateTextFile(workstationNamePath)
workstationNameFile.WriteLine(objEnv("COMPUTERNAME"))
workstationNameFile.Close()
workstationName = objEnv("COMPUTERNAME")
' Hide the file
set workstationNameFile = fileSys.GetFile(workstationNamePath)
workstationNameFile.Attributes = workstationNameFile.Attributes + 2
Else
' Read the file
set workstationNameFile = fileSys.OpenTextFile(workstationNamePath, 1, false)
workstationName = workstationNameFile.ReadLine
End If
' If could not read/write or invalid workstation name script then quit
if workstationName = "" Then
Wscript.Echo "Could not create or read workstation name file " + workstationNamePath
Wscript.Quit
end if
rdpPath = homeShare + "\workstationConnection.rdp"
lnkPath = objEnv("USERPROFILE") + "\Start Menu\Programs\Connect To Personal Workstation.lnk"
' Delete RDP file if exists
If fileSys.FileExists(rdpPath) Then
set rdpFile = fileSys.GetFile(rdpPath)
rdpFile.Delete()
End If
' Delete LNK if exists
If fileSys.FileExists(lnkPath) Then
set lnkAppFolder = lnkApp.Namespace(objEnv("USERPROFILE") + "\Start Menu\Programs")
set lnkAppFolderItem = lnkAppFolder.ParseName("Connect To Personal Workstation.lnk")
lnkAppFolderItem.InvokeVerb("Unp&in from Start menu")
set lnkFile = fileSys.GetFile(lnkPath)
lnkFile.Delete()
End If
if not Trim(workstationName) = Trim(objEnv("COMPUTERNAME")) Then
' Write RDP file structure to new file
set rdpFile = fileSys.CreateTextFile(rdpPath)
rdpFile.WriteLine("screen mode id:i:2")
rdpFile.WriteLine("session bpp:i:16")
rdpFile.WriteLine("full address:s:" + workstationName)
rdpFile.WriteLine("connect to console:i:1")
rdpFile.WriteLine("compression:i:1")
rdpFile.WriteLine("keyboardhook:i:2")
rdpFile.WriteLine("audiomode:i:0")
rdpFile.WriteLine("redirectdrives:i:1")
rdpFile.WriteLine("redirectprinters:i:1")
rdpFile.WriteLine("redirectcomports:i:0")
rdpFile.WriteLine("redirectsmartcards:i:0")
rdpFile.WriteLine("displayconnectionbar:i:1")
rdpFile.WriteLine("autoreconnection enabled:i:1")
rdpFile.WriteLine("username:s:" + objEnv("USERNAME"))
rdpFile.WriteLine("domain:s:" + objEnv("USERDOMAIN"))
rdpFile.WriteLine("disable wallpaper:i:1")
rdpFile.WriteLine("disable full window drag:i:1")
rdpFile.WriteLine("disable menu anims:i:1")
rdpFile.WriteLine("disable themes:i:0")
rdpFile.WriteLine("disable cursor setting:i:1")
rdpFile.WriteLine("bitmapcachepersistenable:i:1")
rdpFile.Close()
' Hide the file
set rdpFile = fileSys.GetFile(rdpPath)
rdpFile.Attributes = rdpFile.Attributes + 2
set lnkFile = wshShell.CreateShortcut(lnkPath)
lnkFile.TargetPath = "%SystemRoot%\system32\mstsc.exe"
lnkFile.WindowStyle = "1"
lnkFile.Description = "Connect to Personal Workstation"
lnkFile.WorkingDirectory = homeShare
lnkFile.IconLocation = "%SystemRoot%\system32\mstsc.exe, 0"
lnkFile.Arguments = """" + rdpPath + """"
lnkFile.Save
set lnkAppFolder = lnkApp.Namespace(objEnv("USERPROFILE") + "\Start Menu\Programs")
set lnkAppFolderItem = lnkAppFolder.ParseName("Connect To Personal Workstation.lnk")
lnkAppFolderItem.InvokeVerb("P&in to Start menu")
End if