{"id":13412,"date":"2026-04-06T09:50:31","date_gmt":"2026-04-06T16:50:31","guid":{"rendered":"https:\/\/www.coretechnologies.com\/blog\/?p=13412"},"modified":"2026-04-06T09:50:31","modified_gmt":"2026-04-06T16:50:31","slug":"version-11-5-sanity-checks","status":"publish","type":"post","link":"https:\/\/www.coretechnologies.com\/blog\/service-protector\/version-11-5-sanity-checks\/","title":{"rendered":"Service Protector 11.5: Powerful New Tools Keep Your Windows Services Running 24\/7"},"content":{"rendered":"<div align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"no-lazy-load\" style=\"margin-bottom:20px;\" src=\"\/blog\/images\/service-protector-11-5-release.webp\" title=\"Service Protector 11.5: Powerful New Tools Keep Your Windows Services Running 24\/7\" alt=\"Service Protector 11.5: Powerful New Tools Keep Your Windows Services Running 24\/7\" border=\"0\" width=\"560\" height=\"373\"><\/div>\n<p><a href=\"\/products\/ServiceProtector\/\">Service Protector<\/a> 11.5 is out!<\/p>\n<p>This release enhances Service Protector&#8217;s <a href=\"\/blog\/service-protector\/version-8-released\/\">sanity checks<\/a> &mdash; advanced tools that automatically detect subtle failures and restart faulty services. Here&#8217;s what the team worked on this time around.<\/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\">Automatically restart your Windows Service if another service isn&#8217;t running<\/h2>\n<p>Does your Windows Service rely on another service to do its work? And must that &#8220;supporting&#8221; service run all the time too?<\/p>\n<p>If so, you&#8217;re in luck because Service Protector 11.5 includes a powerful way handle that situation. We created a new sanity check that:<\/p>\n<ul>\n<li>\n<p>Periodically checks if a supporting service is running, and<\/p>\n<\/li>\n<li>\n<p>Promptly stops\/restarts your main Windows Service if that supporting service isn&#8217;t running<\/p>\n<\/li>\n<\/ul>\n<p>To set up this new capability:<\/p>\n<ol style=\"margin-bottom:24px\">\n<li>\n<p>Edit your service in Service Protector.<\/p>\n<\/li>\n<li>\n<p>Switch to the <b>Monitor<\/b> tab. From there, check the <b>Whenever it fails a periodic sanity check<\/b> box and click the <b>Set<\/b> button on the right:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/service-protector-setup-new-sanity-check.png\" class=\"zoomPopup\" title=\"Setup a new Sanity Check\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/service-protector-setup-new-sanity-check.png\" title=\"Setup a new Sanity Check (click to enlarge)\" alt=\"Setup a new Sanity Check\" border=\"0\"><\/a><\/div>\n<\/li>\n<li>\n<p>In the <b>Add Sanity Check<\/b> window that comes up, choose <b>Check that a Windows Service is running<\/b> from the dropdown:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/service-protector-choose-service-sanity-check.png\"\" class=\"zoomPopup\" title=\"Check that a Windows Service is running\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/service-protector-choose-service-sanity-check.png\"\" title=\"Check that a Windows Service is running(click to enlarge)\" alt=\"Check that a Windows Service is running\" border=\"0\"><\/a><\/div>\n<p>Click <b>Next<\/b> to continue.<\/p>\n<\/li>\n<li>\n<p>At this point, Service Protector will show you a list of the Windows Services running on your machine. Choose the supporting service that you wish to monitor.<\/p>\n<p>For example, we selected the PostgreSQL Database service on our server:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/service-protector-select-postgresql-service-sanity-check.png\" class=\"zoomPopup\" title=\"Choose the supporting Windows Service to monitor\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/service-protector-select-postgresql-service-sanity-check.png\" title=\"Choose the supporting Windows Service to monitor(click to enlarge)\" alt=\"Choose the supporting Windows Service to monitor\" border=\"0\"><\/a><\/div>\n<\/li>\n<li>\n<p>Click <b>Next<\/b> and follow the self-explanatory steps to complete the process and save your new sanity check.<\/p>\n<\/li>\n<\/ol>\n<p>That&#8217;s it. With the new sanity check in place, Service Protector will probe the supporting service every few minutes and take action if it ever stops (for any reason).<\/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\">Check sub-processes for open network connections<\/h2>\n<p>One of the most popular sanity checks confirms that your Windows Service has open network connections. It&#8217;s great failure protection for network servers that must always be available for web browsers, mobile devices and other client software.<\/p>\n<p>Previous releases of Service Protector would only interrogate the executable directly started by the service. And if that executable wasn&#8217;t connected to the network, Service Protector would quickly restart it.<\/p>\n<p>That approach works for the vast majority of cases, where the service&#8217;s main executable does all the work. However, it&#8217;s insufficient for more complex situations where the top-level executable <b>launches sub-processes to do the heavy lifting<\/b>.<\/p>\n<p>To illustrate the problem, let&#8217;s look at the PostgreSQL Windows Service. As a database server, it must always be listening for connections from software searching through records.<\/p>\n<p>Microsoft&#8217;s <a href=\"\/blog\/windows-services\/essential-tools-for-windows-services-process-explorer\/\">Process Explorer<\/a> shows us that the service starts &#8220;pg_ctl.exe&#8221;, which then starts &#8220;postgres.exe&#8221;. Additional sub-processes are spawned as well:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/postgresql-service-process-tree.png\" class=\"zoomPopup\" title=\"PostgreSQL Windows Service process tree\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/postgresql-service-process-tree.png\" title=\"PostgreSQL Windows Service process tree (click to enlarge)\" alt=\"PostgreSQL Windows Service process tree\" border=\"0\" width=\"520\"><\/a><\/div>\n<p>Yet when we examine the tree of processes, we see that &#8220;pg_ctl.exe&#8221; has no network connections. It turns out that &#8220;postgres.exe&#8221; handles all communication:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/postgres-exe-network-connections.png\" class=\"zoomPopup\" title=\"postgres.exe network connections\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/postgres-exe-network-connections.png\" title=\"postgres.exe network connections (click to enlarge)\" alt=\"postgres.exe network connections\" border=\"0\"><\/a><\/div>\n<p>Because of that delegation, the old network connections sanity check didn&#8217;t work for PostgreSQL. Service Protector examined &#8220;pg_ctl.exe&#8221; and declared a failure because it has no connections &mdash; even though its &#8220;postgres.exe&#8221; sub-process was happily handling all requests. Oops.<\/p>\n<p>Service Protector 11.5 fixes that shortcoming. Instead of interrogating the top-level process alone, 11.5 can now audit the entire tree of processes. Just check the <b>Also check sub-processes<\/b> box to enable that new capability:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/service-protector-network-connections-sanity-check-sub-processes.png\" class=\"zoomPopup\" title=\"Check sub-process network connections\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/service-protector-network-connections-sanity-check-sub-processes.png\" title=\"Check sub-process network connections (click to enlarge)\" alt=\"Check sub-process network connections\" border=\"0\"><\/a><\/div>\n<p>Service Protector works for PostgreSQL when the new option is activated. It notices that &#8220;postgres.exe&#8221; &mdash; which was started by &#8220;pg_ctl.exe&#8221; &mdash; has open network connections and the sanity check succeeds. Much better!<\/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\">Check sub-processes for resource handle leaks<\/h2>\n<p>Similarly, the sanity check that detects excessive resource consumption has also been extended to cover the entire tree of processes.<\/p>\n<p>When you check the <b>Also check sub-processes<\/b> box, Service Protector will visit each of the processes created by the service and declare a failure if any of them use more than the maximum number of handles:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/service-protector-subprocess-handle-count-check.png\" class=\"zoomPopup\" title=\"Check sub-process handle count\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/service-protector-subprocess-handle-count-check.png\" title=\"Check sub-process handle count (click to enlarge)\" alt=\"Check sub-process handle count\" border=\"0\"><\/a><\/div>\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\">Other fixes &amp; improvements<\/b><\/h2>\n<p>As usual, this release brings a few internal enhancements as well. Most notably:<\/p>\n<ul>\n<li>\n<p>Version 11.5 improves support for <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-server\/identity\/ad-ds\/manage\/group-managed-service-accounts\/group-managed-service-accounts\/group-managed-service-accounts-overview\" target=\"_blank\">group Managed Service Accounts (gMSA)<\/a>.<\/p>\n<\/li>\n<li>\n<p>To facilitate troubleshooting, Service Protector will cite the serial number when a registration code is not accepted. It should reduce errors in the licensing process.<\/p>\n<\/li>\n<li>\n<p>To run more smoothly on <a href=\"https:\/\/github.com\/nsacyber\/Windows-Secure-Host-Baseline\" target=\"_blank\">Windows Secure Host Baseline (SHB)<\/a>, our developers restructured internal code\/components to avoid conflicts related to <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/memory\/data-execution-prevention\" target=\"_blank\">Data Execution Prevention (DEP)<\/a> and similar process mitigation technologies.<\/p>\n<\/li>\n<\/ul>\n<p style=\"padding-top:10px\">\nAs usual, please review the <a href=\"\/products\/ServiceProtector\/VersionHistory.html\">release notes<\/a> for the full list of features, fixes and improvements included in Service Protector version 11.5.<\/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\">Upgrading to Service Protector 11.5<\/h2>\n<p>If you purchased Service Protector <b>version 10 (after May 10 2024), you can upgrade to version 11 for free<\/b>. Simply download and install over your existing installation to preserve your existing services and all settings. That way, your registration code will continue to work.<\/p>\n<p>If you bought Service Protector <b>9 or earlier (before May 10 2024), you will need to upgrade to use version 11<\/b>.<\/p>\n<p>Please <a href=\"\/products\/ServiceProtector\/buy\/#upgrades\">buy upgrades here &mdash; at a 30% discount<\/a>.<\/p>\n<p>See the complete <a href=\"\/products\/ServiceProtector\/FAQ.html#Upgrade\">upgrade policy<\/a> for more details.<\/p>\n<p style=\"padding-top:10px\">Enjoy!<\/a><\/p>\n<div align=\"center\">\n<div class=\"cta-button-1\">\n<table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"left\">\n<tbody>\n<tr>\n<td align=\"center\"><a href=\"\/blog\/tag\/service-protector-tag\/\" title=\"More articles about Service Protector\"><span><nobr>Read more about Service Protector&#8230;<\/nobr><\/span><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\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\/service-protector\/version-9-released\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"Service Protector 9.0: Easily Import Many Windows Services\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/new-release-150x150-1.webp\" 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\">Service Protector 9.0: Easily Import Many Windows Services<\/h2><\/div><\/div><\/a><a href=\"https:\/\/www.coretechnologies.com\/blog\/miscellaneous\/windows-server-2012-certified\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"Windows Server 2012 Certified\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/windows-server-2012-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 Server 2012 Certified<\/h2><\/div><\/div><\/a><a href=\"https:\/\/www.coretechnologies.com\/blog\/alwaysup\/google-drive-disappearing\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"Q&amp;A: My Google Drive keeps Disappearing. Help!\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/qa-google-drive-not-working-150x150-1.webp\" 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\">Q&amp;A: My Google Drive keeps Disappearing. Help!<\/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>Service Protector 11.5 is out! This release enhances Service Protector&#8217;s sanity checks &mdash; advanced tools that automatically detect subtle failures and restart faulty services. Here&#8217;s what the team worked on this time around. Automatically restart your Windows Service if another &hellip; <a href=\"https:\/\/www.coretechnologies.com\/blog\/service-protector\/version-11-5-sanity-checks\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":13415,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[382,333,109,138,147,401],"class_list":["post-13412","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-service-protector","tag-check-handle-count-sanity-check","tag-network-connections-sanity-check","tag-new-release","tag-sanity-check","tag-service-protector-tag","tag-service-running-sanity-check"],"_links":{"self":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/13412","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=13412"}],"version-history":[{"count":22,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/13412\/revisions"}],"predecessor-version":[{"id":13438,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/13412\/revisions\/13438"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/media\/13415"}],"wp:attachment":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/media?parent=13412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/categories?post=13412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/tags?post=13412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}