My application runs on a locked PC and should unlock the PC by request. Thats all!
"Locked" means here that the user pressed "Ctrl-Alt-Del" and then the "Lock Computer" button.
Means the user sees now the "Windows login screen" on his screen.
Operation System: XP only - for now
My application runs and listens on the blocked PC for commands.
One command is the "unlock the PC!".
The command contains also the username, password and the domain of that user that is currently logged in.
The PC should be unlocked for him!
What I not want:
I want no code for receiving messages - that works already fine in my application.
I want not to switch the user!
I want not that my application runs another application under this or that rights/user.
I want not the auto login (after next reboot).
I want also not to find the "Windows login screen" over his name, and sending the user and password via
sendmessage... (Please think about a japanese PC and how the window title of the windows login screen
What I tested / found / googled:
... was always a "run as", the auto login or doesnt work (like api call "CreateProcessWithLogon" or LogonUser (advapi32))
"My application runs on a locked PC and should unlock the PC by request."
Is it an application, or is a service? If it's not a service, then it's not running at all.
Btw, if one could log in to windows from some third application, which is not process at all, then i would think that there would be a bug in OS. That would enable a virus to first capture user name and password, and then login him once he goes away (?!? sounds strange) and then starts playing with just about anything on pc. Hm... what is next request, turn off his firewall?
You want to control computer os without even running os? Only few services are started when you are not loged in, and all aplications are "paused", keep that on mind. First, for you application even to be running, it needs to be service (set up to start automatically, and run under local service).
If you want to achive remote locking of cumputer, think of computer control without unloging user and loging him back in windows.
Its an application.
And I still believe that the application runs, because I am not talking about the startup scenario! The user started the computer, logged in and pressed then (some times later) the Ctrl+Alt+Del keys ... as described it in my post.
So please assume that the application runs and can react on commands (which are via tcp send).
Also as descibed before: This works all fine, but I am not able to unlock the pc (with the known username, pw and domain...)
Enver, no please be sure that this will not be finally a virus, trojan etc.!
I hope you do understand that "aucun" requires some actions to force windows to use aucun instead of "msgina". But if this is for your internal application which you will install on client pc, i think that should not be a problem.
Without writing and replacing GINA with your own version or without using a 3rd party solution, it's not possible to do what you want and get the "fully unlocked" result, just like the user did it him/herself on the workstation.
Thank you very much to all of you for the fast replies and the help and hints!!!
I think you are right - I would have to write my own GINA!
and yes not in VB
I will stop to investigate here because also when we would found a solution for XP would GINA not work for vista! Means I will give up at this point and think about a service.
More details about my project:
The program on the locked PC contains a 3rd party VNC Server component. (Now should it be clear what I am trying to do, or?)
The application with the VNC Server component listens for VNC connections.
This works fine as long as the pc isnt locked!
But what when the pc is just turned on WITHOUT once a user logged in?
In this situation would my application not run and would not be able to unlock the PC - independently what ever solution we would found!
Means I need a sercive! This service starts (on request) a simple application which contains "only" the VNC server component.
But here we have also some problems:
There isnt a desktop where the application could run "in".
My solution -hopefully: The service starts the application under different user rights (with different credentials; keyword: "CreateProcessWithLogonW").
When this works, runs the application hopefully in a "virtuell" desktop and listens for VNC connections.
The "other side" can then connect to the VNC server, would then see(!) the locked PC and would be able to unlock it.
But this is all theory - I have to test.
What I already tried is to start such an application under that user/rigths under thats a service runs, means under the SYSTEM account. I see then in the taskmanager that the application runs - but I am not able to connect to the VNC server....
I let you all know the details - when I have some ... but now: "Thank god its friday! Watching TV and drinking beer!" (J.J.Cale)
You can use WMI's Win32_Process class, and .NET's System.Management classes, to launch a remote process, with one pitfall. The installer process will run, but no user interface will be possible. So, your .MSI installation has to be configured and launched without expecting any user input at all. Any windows your installer puts up will be launched, but the user will never see them or know they are there.
I have a large function that has a piece of code that gets repeated 8 times or so. Normally I would just make another function and pass all the variables as byref but in the code that repeats I would have to pass EVERY variable in the Larger function 20+ arguments just to get this small one to work. Now yea I can do that but I'm lazy... so here's my question
Is there a way to make an "Inner" function/sub that you can only use inside another specific "Outer" function/sub where you don't have to pass all the variables from the outer to the inner but you can just pass the addressof or something and be able to automatically use all the variables from the outer in the inner.
It sound like you are looking for object oriented programming.
Create a class with properties for each variable. Instantiate the class in your "outer" sub / function, set the properties, use them, and then when you want to call your other sub / function, you only make a byval of your class, and pass the instantiated object to it.
Private Sub ExampleSub()
Dim MyExampleObject As New Example
MyExampleObject.MyVariable = "Example"'some loop here
Function MyFunctionToBeCalledAboutEightTimes(ByVal MyExample As Example) As Integer
If MyExample.MyVariable = "Example" Then
Public Class Example
Private _MyVariable As String
Public Property MyVariable() As String
Set(ByVal value As String)
_MyVariable = value
My advice is free, and you may get what you paid for.
I am writing a small code in VB.NET
when I try to change the "VALUE" property of a ProgressBar in FOR EACH loop like following example it is not accepting the VALUE as a property of the box! if i try to change something like name or text it is okay! but with VALUE is not working
who can help me please?
For Each Item As Windows.Forms.Control In Panel1.Controls
Controls is a collection holding controls, so your for each variable is and must be a Control.
However a general Control only has a few properties, such as Name and Type, it does not have a Value.
Some more specialized controls do have a Value. So you need to copycast your control reference to a ProgressBar reference for those controls that are ProgressBars.
I can't be more specific, I don't know the details in VB.NET (in C# you would use the "as" keyword and a null test).
Luc Pattyn [Forum Guidelines][My Articles] DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
I can change LINE charts Series with the commands, but not a bar / cylinder chart
Dim series1 As excel.Series = CType(ChartPage.SeriesCollection(1), excel.Series)
series1.MarkerForegroundColorIndex = 3