So here is the scoop:
I wrote a tiny C # application that displays the host name, ip address, date displayed, defrost status (we use DeepFreeze), current domain and current date / time to display the welcome screen of our Windows 7 lab machines. This was supposed to replace our previous information block, which was installed statically at startup and actually embedded text in the background, with something more dynamic and functional. The application uses a timer to update the IP address, deep freeze state, and hours per second, and it checks to see if the user is logged in and kills himself when he finds this condition.
If we just run it, through our script run (set using Group Policy), it will contain a script open, and the machine will never enter the login prompt. If we use something like the start or cmd commands to run it under a separate shell / process, it runs until the script finishes running, after which Windows seems to clear all the child processes of the script. Currently, we can get around this with psexec -s -d -i -x to disable it, which allows us to save it after running the script, but can be incredibly slow, adding somewhere between 5 seconds and a minute of our startup time .
We experimented using another C # application to start a process through the Process class using WMI calls (Win32_Process and Win32_ProcessStartup) with different launch flags, etc., but they all end with the same script completion result and the information block process will be killed. I was busy rewriting the application as a service, but the services were never designed to interact with the desktop, not to mention the login window, and that everything that works in the right context would never look difficult.
So, to the question: does anyone have a good way to do this? Run the task so that it does not depend on the launch of the script and runs on top of the welcome screen?
windows-7 login-script
peelman
source share