All pastes #168204 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-09-12 20:03 UTC
rendered paste body
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