Set the Screen saver or lockscreen using script on RMM - powershell

Goal description:
I need to personalize the screen saver on all the computers at my work place to show a specific text or picture(s).
I need to be able to set and force this screen saver and all its customization's through a script, not with the UI or GPOs.
I need the screen saver to be active, to come on (after 5-10 minutes) and stay on (no screen blackout) - regardless of the state of the user logon, logoff or locked status.
I need this to apply to all machines, mostly Win 10, some win 7, Home and Pro editions
I will need to be able to change the customization/to change the text or pictures every week or so.
Here are my problems and concerns:
1) Limitations:
Any deployment of these changes needs to be made through Atera using Scripting. Atera is an RMM which supports execution of .bat and .ps1 (power-shell) files which will run on the local machine as SYSTEM or a local user account.
This is because all 150 computers are spread out over 7 different locations, and not connected to any domain or server of sorts. So, cannot use group policies.
I am not sure how I would specify a picture or multiple pictures for a (slideshow?) screen saver in a script.
I am not sure how to ensure that the screen saver will apply on a system level - like when logged off - and not just a per-user level (most REG based scripts I've seen target the HKCU for screen saver settings - see here for example)
Also, an important note- when scripts run as SYSTEM (and will need to run as such for admin privileges) references to HKCU will not effect the currently logged on user. Therefore, in order to effect "HKCU" registry edits, I would need to edit all the profiles under the HKEY_USERS hive. Not sure how I would reference those profiles in a script. Can I use a "*"? Also, how will it effect the current user if I edit their registry hive from the HKEY_USERS directory while they are logged in?
some computers are Pro while some are Home edition. The Home edition may not allow me to use certain registry keys that would create system policies, although I am unsure about this. Since we would like to enforce this, we want to block the ability to change the screen saver setting options - like is found here. This may not be an issue if we can have the script run daily to reset the settings anyway.
most REG script I've seen to change screen saver settings required the computer to restart or have the user logoff to take effect. This should not be necessary, but haven't figured out how to tell the computer to recognize the new setting without restarting
2) Conflicts
Default on windows is to timeout the screen (black) when locked after a few minutes of idle (I am sure a registry edit can change this)
some computers are going to sleep after idle (possibly a HKLM_currentcontrolset registry entry can fix this).
I currently have a scheduled task that runs on idle (after 10 minutes) which locks the screen and closes methasoft (EMR program) after an hour using a .bat file I created. In my experience, I have seen the screen saver come on, and them upon the device being locked, it would go away and instead show the login screen (like after pressing Start+L). Also, I found that during the testing for methasoft to close (I had tested where it closed within a few minutes) I found that it would bring the screen back on (after blacking out), and I am concerned that it would also kill the screen saver and bring back the lock screen.
This may not be an issue if the screen saver will come on again when idle on the lock screen.

I found this script https://abcdeployment.wordpress.com/2017/04/20/how-to-set-custom-backgrounds-for-desktop-and-lockscreen-in-windows-10-creators-update-v1703-with-powershell/ which works to set the background image for the lockscreen and the desktop. I tested it out and it works. The lockscreen takes effect immediately while the desktop image only takes effect after logging out and logging back in.
This will work for Windows 10 machines.
I still need to find code for windows 7 machines, and code to make sure the screen doesn't turn off after it goes to the lockscreen (on Windows 10 as well).

Create these registry entries for the lockscreen
REG ADD
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP
REG ADD
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /v
LockScreenImagePath /t REG_SZ /d "c:\image.jpg" /f
REG ADD
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /v
LockScreenImageUrl /t REG_SZ /d c:\image.jpg" /f
REG ADD
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /v
LockScreenImageStatus /t REG_DWORD /d 1 /f

Related

Active Screen Reader

Every time I open a new folder or restart my laptop I see an "Screen Reader Detected" warning in my terminal window.
I have also tried turning "off" the accessibility Support in the terminal setting, but still no luck.
Is there any way to solve this problem. Or maybe a way to detect the screen reader so that I can turn it off.
Note: I have not installed any external screen readers. I also have turned "off" the "Narrator" in my windows 10 machine.
This can happen if you have any accessability tools installed on your device like NVDA (non-visual desktop access), and also some web dev suites as they will often include accessibility assessment tools.
These tools will toggle a registry value that can 'light up' accessibility features on apps that are designed with this in mind.
The specific key to check is here, which you can navigate to with regedit.exe:
HKEY_CURRENT_USER\Control Panel\Accessibility\Blind Access
if you have the Key On with a value of 1, then this will trigger the warning.
To remove the warning, simply set the key to 0. You can do this with PowerShell or the old school reg command.
reg add "HKCU\Control Panel\Accessibility\Blind Access" /V On /d 0
Source: https://github.com/PowerShell/PowerShell/issues/11751

Change Epson Cash Drawer setting

I'm looking for a way to change the settings that control the cash drawer either with powershell, vbscript, batch, etc. We have over 40 stores with several registers each. All of those receipt printers were originally configured to open the cash drawer before each print. I have updated our POS software such that it now sends the correct code to prompt the printer to open the drawer only when it is needed (cash transaction, not credit/debit). I'm looking for a way to update the driver setting for all of these printers without having to manually adjust each one. The computers are running Windows 7.
I have tried using PowerShell with some combination of Get-Printer and Set-PrinterProperty, but those cmdlets are not available with Windows 7. I've tried using cscript prncnfg.vbs, but there are no configurable settings options with that command that I could use for this specific settings.
There are only so many places that settings can be saved (Registry, File...). Use Sysinternal's Process Monitor to monitor where the setting is changed.
Start the application.
Just before you go to configure the setting, start capturing in Process Monitor.
Make the change to the setting.
Stop capturing in Process Monitor.
Filter by the PID or Process Name.
Look for write operations to the registry or a file that might represent that setting in your application.
Verify the setting by making changes manually and checking in the application GUI.
You can then use batch, Powershell, VBS, DSC, SCCM or whatever to make that change for all of your clients.

Script to simulate Guest Mode

This is my first question here so, sorry if I break any rule I didn't know yet or don't follow any good practice. But, let's go.
I have a Windows 7 laptop and, usually, colleagues ask me to use it to google something, use Word or something else. I'd like to have a secure area for guests (like what Guest Mode was going to be, until it was removed from Windows 7 final version), enabling guests to browse, do what they want and, during the logoff, undo any changes made and wipe guest user data. As I'm former linux user, my first thought was something like a script called by Cron or on the Init appropriate level.
After googling a bit, I've found information about logon and logoff scripts. I know nearly nothing about scripting in MS platform. Do you think that this approach would be a good solution to my problem? If it is, in which language would I have to write this script? If possible, please provide some simple examples. After getting the basic concepts I can handle the rest.
Thanks a lot!
I am hoping this can answer your question, even though it will not include batch scripting.
Here is a guest account on windows 7:
(source: sevenforums.com)
Open the Control Panel (All Items View).
Click on the User Accounts icon.
Click on the Manage another account link. (See screenshot below)
(source: sevenforums.com)
If prompted by UAC, then click on Yes.
Click on the listed Guest account. (See screenshot below)
(source: sevenforums.com)
Click on the Turn On button. (See screenshot below)
(source: sevenforums.com)
The guest account is now turned on. Close the User Accounts window. (See screenshot below)
(source: sevenforums.com)
A script to delete things is:
rd c:\directory1\ /s /q
md c:\directory1
rd c:\directory2\ /s /q
md c:\directory2
ect.
so...
rd "Insert filepath you want removed here" /s /q
md "Same filepath"
For each directory your want removed, you must have a rd and md.
Save this into your "startup" folder so it will run each time you log-in.

Change compatibility mode/run as using logon script

We have 200+ freshly imaged machines and have learned that in some of them Audacity does not work properly. For some reason, on certain (seemingly random) machines, Audacity needs to be in XPSP3 compatibility mode to run properly and be run as an administrator. Since we have 200+ of these, we are trying to find a way to tell a logon script to change Audacity for us. That way, all we have to do is start the machines and log in. I have looked around and haven't found much. Is this even possible? Thanks
To set these on a system wide basis you just need to push out a reg file like so:
-----------------------------------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Full\\Path\\To\\File.exe"="WINXPSP3"
-----------------------------------
There are additional options if you need them, manually set some yourself and check this registry key.

Strange behavior by the BDE Administrator

Logged into my Windows XP SP2 computer using my normal user account (which has Local Admin privileges), when I start the BDE Administrator -- either from the Control Panel or from the BDEADMIN.EXE directly -- I never get the GUI. It shows up on my task bar, and shows up in the Task Manager, but the GUI never appears. I can close the program by right-clicking on the task bar and choosing close. (note that "never" means not within 5 minutes of launching the program)
If I log into the same exact computer using a different user account (which also has Local Admin privileges), when I start the BDE Administrator, it loads the GUI within a couple seconds.
I used to be able to use the BDE Administrator while logged in under my normal user account, so it's not like this has always been a problem.
While this issue may not be directly programming related, it does make developing and testing a pain when I have to log off and back on a couple of times just to make changes to my BDE configuration.
I am totally stumped. Any idea what might be causing this odd behavior?
One idea is that you may have had two screens running on this box and dragged the window off screen.
Just search for the registry keys that control where the window opens up and delete them. Alternatively, you should be able to right click on the program in the task bar and select Move. Then use your arrow keys to bring it back.
Regardless, I'm voting to close.