{"id":17899,"date":"2014-05-22T17:31:35","date_gmt":"2014-05-22T21:31:35","guid":{"rendered":"https:\/\/nuxx.net\/blog\/?p=17899"},"modified":"2014-05-23T08:22:34","modified_gmt":"2014-05-23T12:22:34","slug":"garmin-express-and-proxy-settings","status":"publish","type":"post","link":"https:\/\/nuxx.net\/blog\/2014\/05\/22\/garmin-express-and-proxy-settings\/","title":{"rendered":"Garmin Express and Proxy Settings"},"content":{"rendered":"<p><a href=\"https:\/\/nuxx.net\/gallery\/v\/computers\/screenshots\/garmin_express_corporate_network_failure.png.html?g2_imageViewsIndex=2\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Garmin Express v3.2.4.0 failing to connect to the internet using a corporate network with an HTTP proxy due a lack of proxy settings.\" src=\"https:\/\/nuxx.net\/gallery\/d\/105989-2\/garmin_express_corporate_network_failure.png\" alt=\"\" width=\"640\" height=\"500\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.garmin.com\">Garmin<\/a> has recently moved to using <em><a href=\"http:\/\/software.garmin.com\/en-US\/express.html\">Garmin Express<\/a><\/em>\u00a0for syncing and updating a number of its devices. I recently had to troubleshoot an issue where it wouldn&#8217;t work from within a corporate network that uses proxy servers. This has been widely reported on the Garmin Forums (eg: <a href=\"https:\/\/forums.garmin.com\/showthread.php?35899-Garmin-Express-Unable-to-connect-to-Garmin-Services\">1<\/a>, <a href=\"https:\/\/forums.garmin.com\/showthread.php?79374-Garmin-express-and-proxy\">2<\/a>), with the general consensus being that Express doesn&#8217;t support proxies. It turns out that this is incorrect; Express does support proxies, but because part of it runs as the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/ms684190%28v=vs.85%29.aspx\">LocalSystem Account (NT AUTHORITY\\SYSTEM)<\/a> it typically doesn&#8217;t have access to the proxy settings.<\/p>\n<p>First, the cause:<\/p>\n<p><em>Garmin Express<\/em> has\u00a0three main components: a service called <em>Garmin Core Update Service<\/em>\u00a0which is\u00a0<code>Garmin.Cartography.MapUpdate.CoreService.exe<\/code>\u00a0running as SYSTEM. The second is a tray applet, <code>ExpressTray.exe<\/code>, which automatically launches on boot running as the currently logged in user. This in turn launches <code>Express.exe<\/code>, which is the program&#8217;s main user interface. The <em>Garmin Core Update Service <\/em>handles the network communication with\u00a0Garmin&#8217;s servers &#8212; something which would normally use proxy servers &#8212; but since the default in Windows is not to have proxy settings for the SYSTEM account, this service\u00a0doesn&#8217;t know how to communicate with the outside world.<\/p>\n<p>Now, a couple workarounds:<\/p>\n<p>The first workaround\u00a0is to change the\u00a0<em>Garmin Core Update Service<\/em> to run as\u00a0the user who needs to run <em>Garmin Express<\/em>. This works, but may experience wrinkles long-term. Setting the service to run as a specific user requires that user&#8217;s password, when password change time occurs (something fairly common on corporate\u00a0networks) the service will likely fail to start.\u00a0Additionally, it changes Garmin&#8217;s application architecture and may have other untold consequences such as becoming undone when\u00a0<em>Express<\/em> updates itself, keeping <em>Express<\/em> from properly functioning on multi-user machines (read: tablets),\u00a0etc.<\/p>\n<p>The second workaround\u00a0is to use the\u00a0<a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/cc739125(v=ws.10).aspx\">ProxySettingsPerUser<\/a>\u00a0policy setting to make the computer have one set of proxy settings for all accounts, user and SYSTEM alike. This is normally defined by <a href=\"http:\/\/en.wikipedia.org\/wiki\/Group_Policy\">Group Policy<\/a>, but can be manually set by setting the registry value <code>ProxySettingPerUser<\/code> in\u00a0<code>HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\CurrentVersion\\Internet Settings<\/code> to DWORD 0x0.\u00a0After changing this setting, resetting the proxy settings in\u00a0<em>Internet Options<\/em> may be necessary.<\/p>\n<p>By having one set of proxy settings\u00a0system-wide, processes running as\u00a0the\u00a0SYSTEM account will then be aware of the proxy settings. However, if the corporate network uses some manner of authentication for its proxy servers then communication may still fail as <em>Express<\/em>\u00a0may\u00a0not have access to appropriate credentials.<\/p>\n<p>I do not feel that either of these is a proper solution, neither good\u00a0long-term or enterprise-wide, but both are usable for\u00a0an individual attempting to resolve problems with a one-off\u00a0installation. Ideally I&#8217;d like to see Garmin change\u00a0<em>Express<\/em> so that network communication is handled as\u00a0the user running the UI.\u00a0Additionally, some customizable proxy options (eg: Use System Settings, Manually Specify Proxy, etc) as many other applications offer would\u00a0make\u00a0<em>Express<\/em>&#8216;\u00a0internet communication considerably more flexible.<\/p>\n<p>(This post applies to Garmin Express 3.2.4.0 only. Newer versions may change this behavior.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Garmin has recently moved to using Garmin Express\u00a0for syncing and updating a number of its devices. I recently had to troubleshoot an issue where it&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/nuxx.net\/blog\/2014\/05\/22\/garmin-express-and-proxy-settings\/\">Continue reading<span class=\"screen-reader-text\">Garmin Express and Proxy Settings<\/span><\/a><\/div>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-17899","post","type-post","status-publish","format-standard","hentry","category-computers","entry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts\/17899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/comments?post=17899"}],"version-history":[{"count":12,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts\/17899\/revisions"}],"predecessor-version":[{"id":17911,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts\/17899\/revisions\/17911"}],"wp:attachment":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/media?parent=17899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/categories?post=17899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/tags?post=17899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}