Host Screen Resolution
-
@Jbob We do the ACT exam at my school district in the high schools. Resolution for the exam must be set to 800x600, it’s required by the testing software. It’s a pain to go set this manually in the labs, and un-set it when testing is over. I’d really appreciate it if the DisplayManager functionality could be worked back into 0.10.x.
-
A powershell snapin would do what you want:
https://community.spiceworks.com/scripts/show/1854-change-screen-resolution-with-powershell
Simply deploy the the snapin to any computers you want in ACT mode. I’m not saying a definitive no to display manager yet, but as you can see there are simple ways to replicate what it did with snapins.
-
@Wayne-Workman said in Host Screen Resolution:
We do the ACT exam at my school district in the high schools. Resolution for the exam must be set to 800x600, it’s required by the testing software.
Holy cow… that’s a requirement! Wouldn’t have expected to hear that and obviously didn’t know that this feature is widely in use. Hope you can get this solved via snapins.
-
@Sebastian-Roth From ACT’s web site:
The ACT is the leading US college admissions test, measuring what you learn in high school to determine your academic readiness for college.
http://www.act.org/content/act/en/products-and-services/the-act.htmlThe software is used in many colleges as an entry exam, as well as in high schools for seniors.
-
I usually hate to throw out 3rd party software in this forum, but I too have software that requires certain screen resolutions. I use NirCmd with a simple batch file as a snapin job.
Download the app and add it to a share that can be accessed by a non user account. This would be everyone or domain computer (if on domain) permissions. Make sure that the file is marked read/execute by that group.
next simply create a batch file with:
@echo off \\sharename\folder\nircmd.exe setdisplay 800 600 60
next create snapin and upload that new batch file and viola
Again not a solution but this how I do it
-T
-
@Tom-S
Hi Tom. I tried that approach but it doesn’t seem to be working when run it as a snapin. When logged in as Administrator I run the exact same command (i just append the -updatereg in my case) and it does what is expected. Have you run into this behavior? I’m using Windows 7 64 bit and the latest nircmd.exe 64 bit.Log file containing the error:
------------------------------------------------------------------------------ ---------------------------------SnapinClient--------------------------------- ------------------------------------------------------------------------------ 5/17/2016 9:30 AM Client-Info Client Version: 0.10.6 5/17/2016 9:30 AM Client-Info Client OS: Windows 5/17/2016 9:30 AM Client-Info Server Version: 7613 5/17/2016 9:30 AM Middleware::Response Success 5/17/2016 9:30 AM SnapinClient Snapin Found: 5/17/2016 9:30 AM SnapinClient ID: 12 5/17/2016 9:30 AM SnapinClient RunWith: 5/17/2016 9:30 AM SnapinClient RunWithArgs: 5/17/2016 9:30 AM SnapinClient Name: vmware_800x600x16 5/17/2016 9:30 AM SnapinClient File: vmware_800x600x16.bat 5/17/2016 9:30 AM SnapinClient Created: 2016-05-17 09:27:58 5/17/2016 9:30 AM SnapinClient Args: 5/17/2016 9:30 AM SnapinClient Action: 5/17/2016 9:30 AM Middleware::Communication Download: http://myfogserver/fog/service/snapins.file.php?mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&taskid=12 5/17/2016 9:30 AM SnapinClient C:\Program Files (x86)\FOG\tmp\vmware_800x600x16.bat 5/17/2016 9:30 AM Bus { "self": true, "channel": "Notification", "data": "{\r\n \"title\": \"Installing vmware_800x600x16\",\r\n \"message\": \"Please do not shutdown until this is completed\",\r\n \"subjectID\": \"snapin-vmware_800x600x16\"\r\n}" } 5/17/2016 9:30 AM Bus ERROR: Could not enter socket 5/17/2016 9:30 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry. 5/17/2016 9:30 AM Bus Emmiting message on channel: Notification 5/17/2016 9:30 AM SnapinClient Starting snapin... 5/17/2016 9:30 AM SnapinClient Snapin finished 5/17/2016 9:30 AM SnapinClient Return Code: -1 5/17/2016 9:30 AM Bus { "self": true, "channel": "Notification", "data": "{\r\n \"title\": \"vmware_800x600x16 Installed\",\r\n \"message\": \"Installation has finished and is now ready for use\",\r\n \"subjectID\": \"snapin-vmware_800x600x16\"\r\n}" } 5/17/2016 9:30 AM Bus ERROR: Could not enter socket 5/17/2016 9:30 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry. 5/17/2016 9:30 AM Bus Emmiting message on channel: Notification 5/17/2016 9:30 AM Middleware::Communication URL: http://myfogserver/fog/service/snapins.checkin.php?taskid=12&exitcode=-1&mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&newService&json ------------------------------------------------------------------------------
-
Snapins run as SYSTEM so they behave differently. Have you tried the powershell command I linked to?
-
@Jbob
Thank you for the suggestion Jbob but something is wonky. 'The system cannot find the file specified.------------------------------------------------------------------------------ ---------------------------------SnapinClient--------------------------------- ------------------------------------------------------------------------------ 5/17/2016 11:16 AM Client-Info Client Version: 0.10.6 5/17/2016 11:16 AM Client-Info Client OS: Windows 5/17/2016 11:16 AM Client-Info Server Version: 7659 5/17/2016 11:16 AM Middleware::Response Success 5/17/2016 11:16 AM SnapinClient Snapin Found: 5/17/2016 11:16 AM SnapinClient ID: 15 5/17/2016 11:16 AM SnapinClient RunWith: powershell.exe -file 5/17/2016 11:16 AM SnapinClient RunWithArgs: 5/17/2016 11:16 AM SnapinClient Name: Set-800x600 5/17/2016 11:16 AM SnapinClient File: Set-800x600.ps1 5/17/2016 11:16 AM SnapinClient Created: 2016-05-17 11:15:15 5/17/2016 11:16 AM SnapinClient Args: 5/17/2016 11:16 AM SnapinClient Action: 5/17/2016 11:16 AM Middleware::Communication Download: http://myfogserver/fog/service/snapins.file.php?mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&taskid=15 5/17/2016 11:16 AM SnapinClient C:\Program Files (x86)\FOG\tmp\Set-800x600.ps1 5/17/2016 11:16 AM Bus { "self": true, "channel": "Notification", "data": "{\r\n \"title\": \"Installing Set-800x600\",\r\n \"message\": \"Please do not shutdown until this is completed\",\r\n \"subjectID\": \"snapin-Set-800x600\"\r\n}" } 5/17/2016 11:16 AM Bus ERROR: Could not enter socket 5/17/2016 11:16 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry. 5/17/2016 11:16 AM Bus Emmiting message on channel: Notification 5/17/2016 11:16 AM SnapinClient Starting snapin... 5/17/2016 11:16 AM SnapinClient ERROR: Could not start snapin 5/17/2016 11:16 AM SnapinClient ERROR: The system cannot find the file specified 5/17/2016 11:16 AM Middleware::Communication URL: http://myfogserver/fog/service/snapins.checkin.php?taskid=15&exitcode=-1&mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&newService&json ------------------------------------------------------------------------------```
-
Runwith should just
powershell.exe
. Run with args should be -file (actually-NoProfile -File
) would be safer. -
@Jbob
Well, still struggling. First off the file I downloaded to be sourced had strangely formatted double quotes so that prevented the file from being interpreted correctly. Fixed that easily with a quick find/replace.Secondly, the share that I was running these from appear to not have the appropriate permissions and I had to add in the -ExecutionPolicy Bypass which I completely overlooked the ability to set those options with the GUI (very nice!).
What I ended up with was putting the file to be sourced in the ps1 that has the resolution I’m looking for and uploading that as a snapin. It runs perfectly fine when I manually download and run on the workstation but it is still giving me an error when running as a FOG snapin.
Powershell script [Set-800x600.ps1]:
Function Set-ScreenResolution { param ( [Parameter(Mandatory=$true, Position = 0)] [int] $Width, [Parameter(Mandatory=$true, Position = 1)] [int] $Height ) $pinvokeCode = @" using System; using System.Runtime.InteropServices; namespace Resolution { [StructLayout(LayoutKind.Sequential)] public struct DEVMODE1 { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmDeviceName; public short dmSpecVersion; public short dmDriverVersion; public short dmSize; public short dmDriverExtra; public int dmFields; public short dmOrientation; public short dmPaperSize; public short dmPaperLength; public short dmPaperWidth; public short dmScale; public short dmCopies; public short dmDefaultSource; public short dmPrintQuality; public short dmColor; public short dmDuplex; public short dmYResolution; public short dmTTOption; public short dmCollate; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmFormName; public short dmLogPixels; public short dmBitsPerPel; public int dmPelsWidth; public int dmPelsHeight; public int dmDisplayFlags; public int dmDisplayFrequency; public int dmICMMethod; public int dmICMIntent; public int dmMediaType; public int dmDitherType; public int dmReserved1; public int dmReserved2; public int dmPanningWidth; public int dmPanningHeight; }; class User_32 { [DllImport("user32.dll")] public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE1 devMode); [DllImport("user32.dll")] public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags); public const int ENUM_CURRENT_SETTINGS = -1; public const int CDS_UPDATEREGISTRY = 0x01; public const int CDS_TEST = 0x02; public const int DISP_CHANGE_SUCCESSFUL = 0; public const int DISP_CHANGE_RESTART = 1; public const int DISP_CHANGE_FAILED = -1; } public class PrmaryScreenResolution { static public string ChangeResolution(int width, int height) { DEVMODE1 dm = GetDevMode1(); if (0 != User_32.EnumDisplaySettings(null, User_32.ENUM_CURRENT_SETTINGS, ref dm)) { dm.dmPelsWidth = width; dm.dmPelsHeight = height; int iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_TEST); if (iRet == User_32.DISP_CHANGE_FAILED) { return "Unable To Process Your Request. Sorry For This Inconvenience."; } else { iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY); switch (iRet) { case User_32.DISP_CHANGE_SUCCESSFUL: { return "Success"; } case User_32.DISP_CHANGE_RESTART: { return "You Need To Reboot For The Change To Happen.\n If You Feel Any Problem After Rebooting Your Machine\nThen Try To Change Resolution In Safe Mode."; } default: { return "Failed To Change The Resolution"; } } } } else { return "Failed To Change The Resolution."; } } private static DEVMODE1 GetDevMode1() { DEVMODE1 dm = new DEVMODE1(); dm.dmDeviceName = new String(new char[32]); dm.dmFormName = new String(new char[32]); dm.dmSize = (short)Marshal.SizeOf(dm); return dm; } } } "@ Add-Type $pinvokeCode -ErrorAction SilentlyContinue [Resolution.PrmaryScreenResolution]::ChangeResolution($width,$height) } #Call Function Set-ScreenResolution & set resolution #Example Set-ScreenResolution 1024 768 or Set-ScreenResolution 1280 1024 Set-ScreenResolution 800 600
Error in fog.log
------------------------------------------------------------------------------ ---------------------------------SnapinClient--------------------------------- ------------------------------------------------------------------------------ 5/17/2016 11:53 AM Client-Info Client Version: 0.10.6 5/17/2016 11:53 AM Client-Info Client OS: Windows 5/17/2016 11:53 AM Client-Info Server Version: 7659 5/17/2016 11:53 AM Middleware::Response Success 5/17/2016 11:53 AM SnapinClient Snapin Found: 5/17/2016 11:53 AM SnapinClient ID: 20 5/17/2016 11:53 AM SnapinClient RunWith: powershell.exe 5/17/2016 11:53 AM SnapinClient RunWithArgs: -ExecutionPolicy Bypass -NoProfile -File 5/17/2016 11:53 AM SnapinClient Name: Set_Resolution_800x600 5/17/2016 11:53 AM SnapinClient File: Set-800x600.ps1 5/17/2016 11:53 AM SnapinClient Created: 2016-05-17 11:52:32 5/17/2016 11:53 AM SnapinClient Args: 5/17/2016 11:53 AM SnapinClient Action: 5/17/2016 11:53 AM Middleware::Communication Download: http://myfogserver/fog/service/snapins.file.php?mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&taskid=20 5/17/2016 11:53 AM SnapinClient C:\Program Files (x86)\FOG\tmp\Set-800x600.ps1 5/17/2016 11:53 AM Bus { "self": true, "channel": "Notification", "data": "{\r\n \"title\": \"Installing Set_Resolution_800x600\",\r\n \"message\": \"Please do not shutdown until this is completed\",\r\n \"subjectID\": \"snapin-Set_Resolution_800x600\"\r\n}" } 5/17/2016 11:53 AM Bus ERROR: Could not enter socket 5/17/2016 11:53 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry. 5/17/2016 11:53 AM Bus Emmiting message on channel: Notification 5/17/2016 11:53 AM SnapinClient Starting snapin... 5/17/2016 11:53 AM SnapinClient Snapin finished 5/17/2016 11:53 AM SnapinClient Return Code: 0 5/17/2016 11:53 AM Bus { "self": true, "channel": "Notification", "data": "{\r\n \"title\": \"Set_Resolution_800x600 Installed\",\r\n \"message\": \"Installation has finished and is now ready for use\",\r\n \"subjectID\": \"snapin-Set_Resolution_800x600\"\r\n}" } 5/17/2016 11:53 AM Bus ERROR: Could not enter socket 5/17/2016 11:53 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry. 5/17/2016 11:53 AM Bus Emmiting message on channel: Notification 5/17/2016 11:53 AM Middleware::Communication URL: http://myfogserver/fog/service/snapins.checkin.php?taskid=20&exitcode=0&mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&newService&json ------------------------------------------------------------------------------
-
you might try this modification to the arguments
Snapin Run With : powershell.exe
Snapin run with argument : -ExecutionPolicy Bypass -command "& ’
Snapin File : script.ps1
Snapin Args: ’ "
the-command "& '
and’ "
are to wrap the .ps1 file in quotes -
@networkguy
Giving up on this. It seems that I need to be logged in as a user to make this work. When run through any of our scripting tools while the computer is at ctrl-alt-del just doesn’t seem to work. -
Please note that it’s been said that the DisplayManager has been built back into the client.
https://forums.fogproject.org/topic/8383/svn-5949-screenres-manager/8?loggedin
@Joe-Schmitt said in Host Screen Resolution:
@networkguy 0.10.0+ removed DisplayManager from the client. As @Sebastian-Roth pointed at, its a very “Windows only” thing and never received much use compared to how much effort went into maintaining it. @Tom-Elliott, perhaps we can add some kind of “warning” next to display manager stating it isn’t present in 0.10.0+ ?
Obviously if there is enough support for it, we can add back display manager, but we won’t be porting it to OSX or Linux.