JonThompson Posted February 24, 2012 Posted February 24, 2012 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.
chazzy2501 Posted February 24, 2012 Posted February 24, 2012 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" 1
Oaktech Posted February 24, 2012 Posted February 24, 2012 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.
mrbios Posted February 24, 2012 Posted February 24, 2012 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.
JonThompson Posted February 24, 2012 Author Posted February 24, 2012 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?
RichCowell Posted February 24, 2012 Posted February 24, 2012 (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 February 24, 2012 by RichCowell
ChrisMiles Posted February 24, 2012 Posted February 24, 2012 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
mrbios Posted February 24, 2012 Posted February 24, 2012 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
JonThompson Posted February 28, 2012 Author Posted February 28, 2012 Thanks guys. I went with the mandatory profile in the end, and so far so good.
chazzy2501 Posted February 29, 2012 Posted February 29, 2012 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.
JonThompson Posted February 29, 2012 Author Posted February 29, 2012 Thanks. After much and desk banging, I got it to work. And on the plus side I got a thank you from the student!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now