Jump to content

Recommended Posts

Posted

Hello, this may be in the wrong place, but it does concern Windows 7.

 

We have been asked to enlarge the screen/icons for a student, with a visual impairment automatically at logon.

 

My first thought was to decrease the screen resolution to say 800x600 using some form of GPO.

 

I have dug around the Internet (including EduGeek), and from what I can gather there does not appear to be a GPO to do this. I have come across a program called ResSwitch and have been experimenting with this using logon scripts but it won’t work at logon, only after logon (run manually via shortcut).

 

My question is, has anyone else had a similar request? and if so, how did you go about implementing it?

 

Thanks.

Posted

I created a new default profile for my student in which I'd upped the font and icon size. So what ever machine they use the fonts get bigger. This however doesn't work until after they have logged in.

 

You can let them use the high contrast mode for login "Left ALT+left SHIFT+PRINT SCREEN"

  • Thanks 1
Posted
we have a similar issue and our solution has been to enable accessibility settings for this user, to allow them to run magnifier, but to avoid the display getting cluttered the machine he uses a second monitor on the DVI output purely for magnifier. I appreciate this may not work for all scenarios/hardware.
Posted

I've not had to deal with this before so not sure what sort of accessibility features you'd want BUT.....

 

If you want to change res for one student only, download a program called Qres.exe stick it somewhere it can run from with that students permissions, put that student in a sub folder of your current student fodler in AD and attach a GPO to it specifically to run a batch file on logon. In the batch file put something along the lines of Qres.exe /w:800 /h:600 or something (syntax will be easy enough to find out from the qres help :)

 

There's probably a lot of other, maybe better programs but qres i know works with windows 7 anyway.

Posted
I've not had to deal with this before so not sure what sort of accessibility features you'd want BUT.....

 

If you want to change res for one student only, download a program called Qres.exe stick it somewhere it can run from with that students permissions, put that student in a sub folder of your current student fodler in AD and attach a GPO to it specifically to run a batch file on logon. In the batch file put something along the lines of Qres.exe /w:800 /h:600 or something (syntax will be easy enough to find out from the qres help :)

 

There's probably a lot of other, maybe better programs but qres i know works with windows 7 anyway.

 

I've downloaded an old version of QRes, and it works to convert the resolution, but when I try and change it back it blue screens my pc. @chazzy2501, I'll try that. Did you just log on as a user, modify the local profile and then just upload it to a server share?

Posted (edited)

I've used ResSwitch in the past when some required a strange resolution, then just added a bat file to the startup on those machines with the following:

 

C:\ResSwitch.exe 1366 768 32 0

 

(I'd already copied the exe to the PCs but it can probably run from a server...)

Edited by RichCowell
Posted

I use a program call nircmd in conjunction with a vbs script on logon to set resolutions based on which OU a computer is in, the groups a user is in etc. So for my VI students I add them to a special group in AD and it sets the resolution when they log in.

 

Const studentComputersDN = "OU=Student Computers,OU=Curriculum,OU=Computers,OU=SomePlace School,DC=someplace,DC=local"
Const teacherComputersDN = "OU=Teacher Computers,OU=Curriculum,OU=Computers,OU=SomePlace School,DC=someplace,DC=local"
Const textilesDN = "OU=Textiles,OU=Classrooms,OU=Student Computers,OU=Curriculum,OU=Computers,OU=SomePlace School,DC=someplace,DC=local"

Set objADSystemInfo = CreateObject("ADSystemInfo") 

strUser = "LDAP://" & objADSystemInfo.UserName
strComputerDN = GetComputerDN
intCurrentBPP = GetCurrentBPP

'Set resolution by OU
If Right(strComputerDN, Len(studentComputersDN)) = studentComputersDN Then
SetDisplaySettings 1024, 768, 32, 60
ElseIf Right(strComputerDN, Len(teacherComputersDN)) = teacherComputersDN Then
SetDisplaySettings 1024, 768, 32, 60
Else
'MsgBox "Not setting resolution because the computer " & strComputerDN & " is not in a recognised OU."
End If

'Set resolution by group
If IsMemberOfADGroup(strUser, "CN=640x480 Resolution,OU=Resolutions,OU=Groups,OU=SomePlace School,DC=someplace,DC=local") Then
SetDisplaySettings 640, 480, intCurrentBPP, 60
ElseIf IsMemberOfADGroup(strUser, "CN=800x600 Resolution,OU=Resolutions,OU=Groups,OU=SomePlace School,DC=someplace,DC=local") Then
SetDisplaySettings 800, 600, intCurrentBPP, 60
ElseIf IsMemberOfADGroup(strUser, "CN=1024x768 Resolution,OU=Resolutions,OU=Groups,OU=SomePlace School,DC=someplace,DC=local") Then
SetDisplaySettings 1024, 768, intCurrentBPP, 60
ElseIf IsMemberOfADGroup(strUser, "CN=1280x1024 Resolution,OU=Resolutions,OU=Groups,OU=SomePlace School,DC=someplace,DC=local") Then
SetDisplaySettings 1280, 1024, intCurrentBPP, 60
Else
'SetDisplaySettings 1024, 768, intCurrentBPP, 60
'MsgBox "Not setting resolution because the user " & strUser & " is not in a resolution group."
End If

'**********************************************************************'
' SetDisplaySettings                                                   '
'**********************************************************************'
' If necissary, sets the display settings to those specified.          '
'**********************************************************************'

Function SetDisplaySettings(intWidth, intHeight, intBPP, intHz)
If Not IsCurrentDisplaySettings(intWidth, intHeight, intBPP, intHz) Then
	strCmd = "\\someplace.local\NETLOGON\Programs\nircmd\nircmdc.exe setdisplay " & intWidth & " " & intHeight & " " & intBPP & " " & intHz
	Set objShell = WScript.CreateObject("WScript.Shell")
	objShell.Run strCmd
End If
End Function

'**********************************************************************'
' IsCurrentDisplaySettings                                             '
'**********************************************************************'
' Compares the specified display settings with the current config.     '
'**********************************************************************'

Function IsCurrentDisplaySettings(intWidth, intHeight, intBPP, intHz)
Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * From Win32_VideoController")
intCurrentWidth = 0
intCurrentHeight = 0
intCurrentBPP = 16
intCurrentHz = 0

For Each objItem in colItems
	intCurrentWidth = objItem.CurrentHorizontalResolution
	intCurrentHeight = objItem.CurrentVerticalResolution
	intCurrentBPP = objItem.CurrentBitsPerPixel
	intCurrentHz = objItem.CurrentRefreshRate
Next 

If Not IsNumeric(intCurrentBPP) Then
	intCurrentBPP = 16
End If

If intCurrentWidth = intWidth And intCurrentHeight = intHeight And intCurrentBPP = intBPP Then
	IsCurrentDisplaySettings = True
Else
	IsCurrentDisplaySettings = False
End If
End Function

'**********************************************************************'
' GetCurrentBPP                                                        '
'**********************************************************************'
' Gets the display's current display bits per pixel.                   '
'**********************************************************************'

Function GetCurrentBPP()
Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * From Win32_VideoController")
intBPP = 16

For Each objItem in colItems
	intBPP = objItem.CurrentBitsPerPixel
Next 

If Not IsNumeric(intBPP) Then
	intBPP = 16
End If

GetCurrentBPP = intBPP
End Function

'**********************************************************************'
' GetComputerDN                                                        '
'**********************************************************************'
' Gets the DN of the current computer.                                 '
'**********************************************************************'

Function GetComputerDN()
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1

Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2") 
Set wshNetwork = CreateObject("WScript.Network")
Set objTrans = CreateObject("NameTranslate")
Set objADSystemInfo = CreateObject("ADSystemInfo") 

Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")

For Each objItem in colItems
	strDomainDnsName = objItem.Domain
Next

Set colItems = objWMIService.ExecQuery("Select * From Win32_NTDomain Where DnsForestName = '" & strDomainDnsName & "'")

For Each objItem in colItems
	strDomainNetbiosName = objItem.DomainName
Next

objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strDomainNetbiosName & "\" & wshNetwork.ComputerName & "$"

GetComputerDN = objTrans.Get(ADS_NAME_TYPE_1779)
End Function

'**********************************************************************'
' IsMemberOfADGroup                                                    '
'**********************************************************************'
' Gets the members of the specified group (strGroupDN) and checks for  '
' the existance of the specified user (strUserDN).                     '
'**********************************************************************'

Private Function IsMemberOfADGroup(strUserDN, strGroupDN)

Set objUser = GetObject(strUserDN)

arrMembers = GetMembers(strGroupDN)

bolFound = False

For Each strMember in arrMembers
	If strMember = objUser.ADsPath Then
		bolFound = True
		Exit For
	End If
Next

IsMemberOfADGroup = bolFound

End Function

'**********************************************************************'
' GetMembers                                                           ' 
'**********************************************************************'
' Calls GetMembersRecurse on the specified group.                      '
'**********************************************************************'

Private Function GetMembers(strGroupDN)

Set dicProcessedGroups = CreateObject("Scripting.Dictionary")
Set dicMembers = CreateObject("Scripting.Dictionary")

dicProcessedGroups.Add "LDAP://" & strGroupDN, 1

GetMembersRecurse "LDAP://" & strGroupDN, dicProcessedGroups, dicMembers

GetMembers = dicMembers.Keys

End Function

'**********************************************************************'
' GetMembersRecurse                                                    ' 
'**********************************************************************'
' Gets the members of the specified group (strGroupDN), adds the user  '
' members to the members dictionary (dicMembers), adds the group to    '
' the dicProcessedGroups dictionary and calls GetMembersRecurse on     '
' each group member in turn only if it does not appear in the          '
' dicProcessedGroups dictionary.                                       '
'**********************************************************************'

Private Function GetMembersRecurse(strGroupDN, dicProcessedGroups, dicMembers)
Set objGroup = GetObject(strGroupDN)

For Each objMember in objGroup.Members
	If objMember.Class = "group" Then
		If Not dicProcessedGroups.Exists(objMember.ADsPath) Then
			dicProcessedGroups.Add objMember.ADsPath, 1
			GetMembersRecurse objMember.ADsPath, dicProcessedGroups, dicMembers
		End If
	Else
		If Not dicMembers.Exists(objMember.ADsPath) Then
			dicMembers.Add objMember.ADsPath, 1
		End If
	End If
Next
End Function

Posted
I use a program call nircmd in conjunction with a vbs script on logon to set resolutions based on which OU a computer is in, the groups a user is in etc. So for my VI students I add them to a special group in AD and it sets the resolution when they log in.

 

Just an FYI to anyone that decides to try this route, if you're using sophos on your network you might need to add nircmd to the allowed programs list as when i tried this quite a while back it instantly deleted it from every PC i put it on :p

Posted
I've downloaded an old version of QRes, and it works to convert the resolution, but when I try and change it back it blue screens my pc. @chazzy2501, I'll try that. Did you just log on as a user, modify the local profile and then just upload it to a server share?

 

yes thats it.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...