{"id":8988,"date":"2020-05-16T20:22:26","date_gmt":"2020-05-17T03:22:26","guid":{"rendered":"https:\/\/www.coretechnologies.com\/blog\/?p=8988"},"modified":"2025-12-10T19:17:03","modified_gmt":"2025-12-11T03:17:03","slug":"interact-with-desktop","status":"publish","type":"post","link":"https:\/\/www.coretechnologies.com\/blog\/windows-services\/interact-with-desktop\/","title":{"rendered":"Q&#038;A: Why doesn&#8217;t &#8220;Allow service to interact with desktop&#8221; work?"},"content":{"rendered":"<div class=\"blog-qa-question-box\">\n<img decoding=\"async\" class=\"no-lazy-load\" src=\"\/images\/quotes-transparent-21x21.png\">&nbsp;&nbsp;Our legacy Windows Service shows an alert box when it fails to print a document on our server 2012 R2 controller.<\/p>\n<p>I went into the service, clicked on the properties and set it to be able to interact with the desktop. How come I still can&#8217;t see the alert windows? Do I need to change something else?<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/allow-service-to-interact-with-desktop.png\" class=\"zoomPopup\" title=\"Allow service to interact with desktop\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"image-padding no-lazy-load\" src=\"\/blog\/images\/allow-service-to-interact-with-desktop.png\" title=\"Allow service to interact with desktop (click to enlarge)\" alt=\"Allow service to interact with desktop\" border=\"0\" \/><\/a><\/div>\n<p align=\"right\">&mdash; Justin F.<\/p>\n<\/div>\n<p>Hi Justin.<\/p>\n<p>Unfortunately that setting is from a bygone time. It no longer does what you expect. Let me explain.<\/p>\n<hr class=\"blog-section\">\n<div style=\"width:100%;margin-bottom:30px;\">\n<div style=\"margin:0px;float:right;\"><a href=\"#top\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn.coretechnologies.com\/images\/top.jpg\" border=\"0\" width=\"50\" height=\"18\" title=\"Go to the top\" alt=\"\" \/><\/a><\/div>\n<\/div>\n<h2 class=\"blog-caption\">Old versions of Windows supported interactive services<\/h2>\n<div align=\"center\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/old-windows-logo.png\" title=\"Old versions of Windows support interactive services\" alt=\"Old versions of Windows support interactive services\" border=\"0\" \/><\/div>\n<p>In Windows NT, 2000, XP and Server 2003 it was reasonable (and occasionally encouraged) for a service to create windows and other graphical elements. It was possible for someone logging in to the PC to see a service&#8217;s windows, happily intermingling with conventional applications on his desktop (like Word and Excel).<\/p>\n<p>On those old operating systems, the &#8220;Allow service to interact with desktop&#8221; setting controlled the visibility of the service&#8217;s interface. If checked, the first person logging into the PC would see the service&#8217;s windows. If unchecked, the windows would not be visible. In short, the checkbox made sense.<\/p>\n<p>However, in the mid-2000s, the concept of interactive services was exposed as a security risk. Hackers developed rogue Windows Services that would invade the desktop, requesting passwords, installing dangerous software and ultimately compromising a healthy computer. Those so called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Shatter_attack\" target=\"_blank\" rel=\"noopener noreferrer\">shatter attacks<\/a> (because they visibly shatter the user&#8217;s secure environment) emerged as a serious threat.<\/p>\n<p>Fortunately the folks in Redmond were quick to respond.<\/p>\n<hr class=\"blog-section\">\n<div style=\"width:100%;margin-bottom:30px;\">\n<div style=\"margin:0px;float:right;\"><a href=\"#top\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn.coretechnologies.com\/images\/top.jpg\" border=\"0\" width=\"50\" height=\"18\" title=\"Go to the top\" alt=\"\" \/><\/a><\/div>\n<\/div>\n<h2 class=\"blog-caption\">Interactive services are crippled (or eliminated) in current editions of Windows<\/h2>\n<div align=\"center\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/new-windows-logo.png\" title=\"Interactive services are crippled in current editions of Windows\" alt=\"Interactive services are crippled in current editions of Windows\" border=\"0\" \/><\/div>\n<p>Microsoft plugged the shatter attack security hole in Windows Vista. The remedy &mdash; known as <a href=\"\/WindowsServices\/FAQ.html#WhatIsSession0Isolation\">Session 0 Isolation<\/a> &mdash; is an architectural change that prevents a service&#8217;s windows from showing up on a regular desktop. Going forward, windows created by a service would be effectively hidden.<\/p>\n<p>The change profoundly diminished the utility of the &#8220;Allow service to interact with desktop&#8221; option. Checking the box still enables a service to show its windows, but <b>only on the hidden Session 0 desktop<\/b>.<\/p>\n<p>The reality is that on or off, <b>the checkbox cannot empower a Windows Service to show itself on <i>your own<\/i> desktop<\/b>.<\/p>\n<p>But all is not lost for your situation&#8230;<\/p>\n<hr class=\"blog-section\">\n<div style=\"width:100%;margin-bottom:30px;\">\n<div style=\"margin:0px;float:right;\"><a href=\"#top\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn.coretechnologies.com\/images\/top.jpg\" border=\"0\" width=\"50\" height=\"18\" title=\"Go to the top\" alt=\"\" \/><\/a><\/div>\n<\/div>\n<h2 class=\"blog-caption\">However you can still see alerts from your service since you&#8217;re on Windows Server 2012<\/h2>\n<p>In versions of Windows where Session 0 is accessible &mdash; specifically Windows 8.1\/8 and Server 2016\/2012 &mdash; you can see the alerts from your service. You have to switch to Session 0 to see them though.<\/p>\n<p>To make that possible:<\/p>\n<ol>\n<li>\nEnable interactive services.<\/p>\n<p>Start <a href=\"https:\/\/www.computerhope.com\/issues\/ch001348.htm\" target=\"_blank\" rel=\"noopener noreferrer\">Regedit<\/a>, navigate to <b><span class=\"break-long-words\">HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows<\/span><\/b> and change the value of <b>NoInteractiveServices<\/b> from 1 to 0:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/set-nointeractiveservices-registry-value.png\" class=\"zoomPopup\" title=\"Enable interactive services registry value\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/set-nointeractiveservices-registry-value.png\" title=\"Enable interactive services registry value (click to enlarge)\" alt=\"Enable interactive services registry value\" border=\"0\" \/><\/a><\/div>\n<\/li>\n<li>\nEnable the <a href=\"\/blog\/alwaysup\/prevent-interactive-services-detection\/\">Interactive Services Detection service<\/a>.<\/p>\n<p>Launch <a href=\"\/blog\/windows-services\/essential-tools-windows-services-msc\/\">Services<\/a>, open the <b>Interactive Services Detection<\/b> service and change the <b>Startup type<\/b> to <b>Automatic<\/b> or <b>Automatic (Delayed Start)<\/b>:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/set-isd-service-automatic.png\" class=\"zoomPopup\" title=\"Enable the Interactive Services Detection service\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/set-isd-service-automatic.png\" title=\"Enable the Interactive Services Detection service (click to enlarge)\" alt=\"Enable the Interactive Services Detection service\" border=\"0\" \/><\/a><\/div>\n<\/li>\n<\/ol>\n<p>With that in place, Windows will pop up a window whenever your service is showing an alert in Session 0:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/interactive-services-detection-prompt.png\" class=\"zoomPopup\" title=\"Interactive Services Detection prompt\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/interactive-services-detection-prompt.png\" title=\"Interactive Services Detection prompt (click to enlarge)\" alt=\"Interactive Services Detection prompt\" border=\"0\" \/><\/a><\/div>\n<p>Click <b>View the message<\/b> to switch to the austere Session 0 desktop where you should see your alert window.<\/p>\n<p>And when you&#8217;re done, click <b>Return now<\/b> to go back to the safety of your regular desktop.<\/p>\n<hr class=\"blog-section\">\n<div style=\"width:100%;margin-bottom:30px;\">\n<div style=\"margin:0px;float:right;\"><a href=\"#top\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn.coretechnologies.com\/images\/top.jpg\" border=\"0\" width=\"50\" height=\"18\" title=\"Go to the top\" alt=\"\" \/><\/a><\/div>\n<\/div>\n<h2 class=\"blog-caption\">Note: There is no way to see your service&#8217;s alerts on Windows Server 2019<\/h2>\n<p>Unfortunately the solution for Server 2012 will not work on Server 2019 because <a href=\"\/blog\/windows-services\/interactive-services-removed-windows-10\/\">Microsoft has completely removed access to Session 0<\/a> in their newest operating systems. There is simply no way to see an application running on the hidden desktop.<\/p>\n<p>Please keep that in mind before upgrading your server!<\/p>\n<!-- relpost-thumb-wrapper --><div class=\"relpost-thumb-wrapper\"><!-- filter-class --><div class=\"relpost-thumb-container\"><style>.relpost-block-single-image, .relpost-post-image { margin-bottom: 10px; }<\/style><h3>You may also like...<\/h3><div style=\"clear: both\"><\/div><div style=\"clear: both\"><\/div><!-- relpost-block-container --><div class=\"relpost-block-container relpost-block-column-layout\" style=\"--relposth-columns: 3;--relposth-columns_t: 2; --relposth-columns_m: 2\"><a href=\"https:\/\/www.coretechnologies.com\/blog\/windows-services\/how-to-restart-service-daily\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"How to Restart a Windows Service Every Day (or Week)\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/restart-windows-service-150x150-2.png\" style=\"aspect-ratio:1\/1\" style=\"aspect-ratio:1\/1\"><\/img><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: #333333;\"><h2 class=\"relpost_card_title\">How to Restart a Windows Service Every Day (or Week)<\/h2><\/div><\/div><\/a><a href=\"https:\/\/www.coretechnologies.com\/blog\/windows-services\/windows-services-no-significant-changes-in-windows-8-and-windows-server-2012\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"Windows Services: No Significant Changes in Windows 8 and Windows Server 2012\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/windows-logo-150x150.png\" style=\"aspect-ratio:1\/1\" style=\"aspect-ratio:1\/1\"><\/img><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: #333333;\"><h2 class=\"relpost_card_title\">Windows Services: No Significant Changes in Windows 8 and Windows Server 2012<\/h2><\/div><\/div><\/a><a href=\"https:\/\/www.coretechnologies.com\/blog\/alwaysup\/alwaysup-works-with-windows-8-windows-server-2012\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"Windows 8\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/win8-150x150.png\" style=\"aspect-ratio:1\/1\" style=\"aspect-ratio:1\/1\"><\/img><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: #333333;\"><h2 class=\"relpost_card_title\">AlwaysUp works with Windows 8 &amp; Windows Server 2012<\/h2><\/div><\/div><\/a><\/div><!-- close relpost-block-container --><div style=\"clear: both\"><\/div><\/div><!-- close filter class --><\/div><!-- close relpost-thumb-wrapper -->","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp;Our legacy Windows Service shows an alert box when it fails to print a document on our server 2012 R2 controller. I went into the service, clicked on the properties and set it to be able to interact with the &hellip; <a href=\"https:\/\/www.coretechnologies.com\/blog\/windows-services\/interact-with-desktop\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":3560,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[91,127,153,192,196],"class_list":["post-8988","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-windows-services","tag-interactive-services","tag-qa","tag-session-0-isolation","tag-windows-server-2012","tag-windows-services-2"],"_links":{"self":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/8988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/comments?post=8988"}],"version-history":[{"count":45,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/8988\/revisions"}],"predecessor-version":[{"id":13275,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/8988\/revisions\/13275"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/media\/3560"}],"wp:attachment":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/media?parent=8988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/categories?post=8988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/tags?post=8988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}