Is it possible to configure a Windows Service to:
1. Start the service when a user logs on (i.e. service not active before
logon)
2. Determine the WindowsIdentity of the currently logged on user
Niclas
Greg Young - 28 Feb 2006 23:14 GMT
I have dealt with a similar situation before ... I never got the actual
identity of the user but using
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/TermSe
rv/wtsgetactiveconsolesessionid.asp
an
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/TermSe
rv/wtsquerysessioninformation.asp
I was able to get the name of the user (including fast switching for
multiple users).
Cheers,
Greg
> Is it possible to configure a Windows Service to:
>
[quoted text clipped - 4 lines]
>
> Niclas
Gabriel Magaña - 28 Feb 2006 23:33 GMT
Did you take into account remote desktop and/or terminal services? This
would mean that several users have valid session concurrently... How did
you deal with that screnario?
>I have dealt with a similar situation before ... I never got the actual
> identity of the user but using
[quoted text clipped - 18 lines]
>>
>> Niclas
William Stacey [MVP] - 01 Mar 2006 02:44 GMT
| 1. Start the service when a user logs on (i.e. service not active before
| logon)
You could use the ServiceControl control to start service when your app
starts. Or put your app in the Startup folder.
| 2. Determine the WindowsIdentity of the currently logged on user
private void button18_Click(object sender, EventArgs e)
{
WindowsIdentity wi = WindowsIdentity.GetCurrent();
Console.WriteLine("Current User: " + wi.Name);
foreach (IdentityReference ir in wi.Groups)
{
NTAccount acc = (NTAccount)ir.Translate(typeof(NTAccount));
Console.WriteLine("Member of: " + acc.Value);
}
}