I'm trying to make a small service which check whether windows on Remote desktop session or not and open a program if yes
public partial class Service1 : ServiceBase
{
[DllImport("user32.dll")]
static extern int GetSystemMetrics(SystemMetric smIndex);
public enum SystemMetric
{
SM_CXSCREEN = 0, // 0x00
SM_CYSCREEN = 1, // 0x01
SM_CXVSCROLL = 2, // 0x02
SM_CYHSCROLL = 3, // 0x03
SM_CYCAPTION = 4, // 0x04
SM_CXBORDER = 5, // 0x05
SM_CYBORDER = 6, // 0x06
SM_CXDLGFRAME = 7, // 0x07
//SM_CXFIXEDFRAME = 7, // 0x07
SM_CYDLGFRAME = 8, // 0x08
//SM_CYFIXEDFRAME = 8, // 0x08
SM_CYVTHUMB = 9, // 0x09
SM_CXHTHUMB = 10, // 0x0A
SM_CXICON = 11, // 0x0B
SM_CYICON = 12, // 0x0C
SM_CXCURSOR = 13, // 0x0D
SM_CYCURSOR = 14, // 0x0E
SM_CYMENU = 15, // 0x0F
SM_CXFULLSCREEN = 16, // 0x10
SM_CYFULLSCREEN = 17, // 0x11
SM_CYKANJIWINDOW = 18, // 0x12
SM_MOUSEPRESENT = 19, // 0x13
SM_CYVSCROLL = 20, // 0x14
SM_CXHSCROLL = 21, // 0x15
SM_DEBUG = 22, // 0x16
SM_SWAPBUTTON = 23, // 0x17
SM_CXMIN = 28, // 0x1C
SM_CYMIN = 29, // 0x1D
SM_CXSIZE = 30, // 0x1E
SM_CYSIZE = 31, // 0x1F
//SM_CXSIZEFRAME = 32, // 0x20
SM_CXFRAME = 32, // 0x20
//SM_CYSIZEFRAME = 33, // 0x21
SM_CYFRAME = 33, // 0x21
SM_CXMINTRACK = 34, // 0x22
SM_CYMINTRACK = 35, // 0x23
SM_CXDOUBLECLK = 36, // 0x24
SM_CYDOUBLECLK = 37, // 0x25
SM_CXICONSPACING = 38, // 0x26
SM_CYICONSPACING = 39, // 0x27
SM_MENUDROPALIGNMENT = 40, // 0x28
SM_PENWINDOWS = 41, // 0x29
SM_DBCSENABLED = 42, // 0x2A
SM_CMOUSEBUTTONS = 43, // 0x2B
SM_SECURE = 44, // 0x2C
SM_CXEDGE = 45, // 0x2D
SM_CYEDGE = 46, // 0x2E
SM_CXMINSPACING = 47, // 0x2F
SM_CYMINSPACING = 48, // 0x30
SM_CXSMICON = 49, // 0x31
SM_CYSMICON = 50, // 0x32
SM_CYSMCAPTION = 51, // 0x33
SM_CXSMSIZE = 52, // 0x34
SM_CYSMSIZE = 53, // 0x35
SM_CXMENUSIZE = 54, // 0x36
SM_CYMENUSIZE = 55, // 0x37
SM_ARRANGE = 56, // 0x38
SM_CXMINIMIZED = 57, // 0x39
SM_CYMINIMIZED = 58, // 0x3A
SM_CXMAXTRACK = 59, // 0x3B
SM_CYMAXTRACK = 60, // 0x3C
SM_CXMAXIMIZED = 61, // 0x3D
SM_CYMAXIMIZED = 62, // 0x3E
SM_NETWORK = 63, // 0x3F
SM_CLEANBOOT = 67, // 0x43
SM_CXDRAG = 68, // 0x44
SM_CYDRAG = 69, // 0x45
SM_SHOWSOUNDS = 70, // 0x46
SM_CXMENUCHECK = 71, // 0x47
SM_CYMENUCHECK = 72, // 0x48
SM_SLOWMACHINE = 73, // 0x49
SM_MIDEASTENABLED = 74, // 0x4A
SM_MOUSEWHEELPRESENT = 75, // 0x4B
SM_XVIRTUALSCREEN = 76, // 0x4C
SM_YVIRTUALSCREEN = 77, // 0x4D
SM_CXVIRTUALSCREEN = 78, // 0x4E
SM_CYVIRTUALSCREEN = 79, // 0x4F
SM_CMONITORS = 80, // 0x50
SM_SAMEDISPLAYFORMAT = 81, // 0x51
SM_IMMENABLED = 82, // 0x52
SM_CXFOCUSBORDER = 83, // 0x53
SM_CYFOCUSBORDER = 84, // 0x54
SM_TABLETPC = 86, // 0x56
SM_MEDIACENTER = 87, // 0x57
SM_STARTER = 88, // 0x58
SM_SERVERR2 = 89, // 0x59
SM_MOUSEHORIZONTALWHEELPRESENT = 91, // 0x5B
SM_CXPADDEDBORDER = 92, // 0x5C
SM_DIGITIZER = 94, // 0x5E
SM_MAXIMUMTOUCHES = 95, // 0x5F
SM_REMOTESESSION = 0x1000, // 0x1000
SM_SHUTTINGDOWN = 0x2000, // 0x2000
SM_REMOTECONTROL = 0x2001, // 0x2001
}
private Timer timer = null;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
timer = new Timer();
this.timer.Interval = 10000;
this.timer.Elapsed += new System.Timers.ElapsedEventHandler(this.timer_tick);
timer.Enabled = true;
Library.writeErrorLog("Service Started !");
}
private void timer_tick(object sender , ElapsedEventArgs e)
{
int result = GetSystemMetrics(SystemMetric.SM_REMOTESESSION);
bool isRemoteSession = (result != 0);
Library.writeErrorLog("System IsOn Remote Session : "+isRemoteSession.ToString()+" !");
if (isRemoteSession)
{
Process yourProcess = new Process();
yourProcess.StartInfo.FileName = @"C:\Remote.txt";
yourProcess.Start();
}
}
protected override void OnStop()
{
timer.Enabled = false;
Library.writeErrorLog("Service Stopped !");
}
}
the problem now that the "isRemoteSession" is always False , this is the log file content before and after remote session
4/25/2017 9:13:02 PM : Service Stopped !
4/25/2017 9:13:54 PM : Service Started !
4/25/2017 9:13:57 PM : System IsOn Remote Session : False !
4/25/2017 9:14:00 PM : System IsOn Remote Session : False !
4/25/2017 9:14:03 PM : System IsOn Remote Session : False !
4/25/2017 9:14:06 PM : System IsOn Remote Session : False !
4/25/2017 9:14:09 PM : System IsOn Remote Session : False !
4/25/2017 9:14:12 PM : System IsOn Remote Session : False !
4/25/2017 9:14:16 PM : System IsOn Remote Session : False !
4/25/2017 9:14:19 PM : System IsOn Remote Session : False !
4/25/2017 9:14:22 PM : System IsOn Remote Session : False !
4/25/2017 9:14:25 PM : System IsOn Remote Session : False !
4/25/2017 9:14:28 PM : System IsOn Remote Session : False !
4/25/2017 9:14:31 PM : System IsOn Remote Session : False !
4/25/2017 9:14:34 PM : System IsOn Remote Session : False !
4/25/2017 9:14:37 PM : System IsOn Remote Session : False !
4/25/2017 9:14:40 PM : System IsOn Remote Session : False !
4/25/2017 9:14:43 PM : System IsOn Remote Session : False !
4/25/2017 9:14:46 PM : System IsOn Remote Session : False !
4/25/2017 9:14:49 PM : System IsOn Remote Session : False !
4/25/2017 9:14:52 PM : System IsOn Remote Session : False !
4/25/2017 9:14:55 PM : System IsOn Remote Session : False !
4/25/2017 9:14:58 PM : System IsOn Remote Session : False !
4/25/2017 9:15:01 PM : System IsOn Remote Session : False !
4/25/2017 9:15:04 PM : System IsOn Remote Session : False !
4/25/2017 9:15:07 PM : System IsOn Remote Session : False !
4/25/2017 9:15:10 PM : System IsOn Remote Session : False !
4/25/2017 9:15:13 PM : System IsOn Remote Session : False !
4/25/2017 9:15:16 PM : System IsOn Remote Session : False !
4/25/2017 9:15:19 PM : System IsOn Remote Session : False !
4/25/2017 9:15:22 PM : System IsOn Remote Session : False !
4/25/2017 9:15:25 PM : System IsOn Remote Session : False !
4/25/2017 9:15:27 PM : Service Stopped !
4/25/2017 9:15:38 PM : Service Started !
4/25/2017 9:15:41 PM : System IsOn Remote Session : False !
4/25/2017 9:15:44 PM : System IsOn Remote Session : False !
4/25/2017 9:15:47 PM : System IsOn Remote Session : False !
4/25/2017 9:15:50 PM : System IsOn Remote Session : False !
4/25/2017 9:15:53 PM : System IsOn Remote Session : False !
4/25/2017 9:15:56 PM : System IsOn Remote Session : False !
4/25/2017 9:15:59 PM : System IsOn Remote Session : False !
4/25/2017 9:16:02 PM : System IsOn Remote Session : False !
4/25/2017 9:16:05 PM : System IsOn Remote Session : False !
4/25/2017 9:16:08 PM : System IsOn Remote Session : False !
4/25/2017 9:16:11 PM : System IsOn Remote Session : False !
4/25/2017 9:16:14 PM : System IsOn Remote Session : False !
4/25/2017 9:16:17 PM : System IsOn Remote Session : False !
4/25/2017 9:16:20 PM : System IsOn Remote Session : False !
4/25/2017 9:16:23 PM : System IsOn Remote Session : False !
4/25/2017 9:16:26 PM : System IsOn Remote Session : False !
4/25/2017 9:16:29 PM : System IsOn Remote Session : False !
4/25/2017 9:16:32 PM : System IsOn Remote Session : False !
4/25/2017 9:16:35 PM : System IsOn Remote Session : False !
4/25/2017 9:16:38 PM : System IsOn Remote Session : False !
4/25/2017 9:16:41 PM : System IsOn Remote Session : False !
4/25/2017 9:16:44 PM : System IsOn Remote Session : False !
4/25/2017 9:16:47 PM : System IsOn Remote Session : False !
i tried to test the same code as a windows form application and it works well when i enter Remote desktop session