{"id":110,"date":"2008-03-18T18:15:43","date_gmt":"2008-03-19T02:15:43","guid":{"rendered":"http:\/\/www.curlybrace.com\/words\/?p=110"},"modified":"2008-10-15T22:39:05","modified_gmt":"2008-10-16T06:39:05","slug":"windows-vista-uac-goofiness","status":"publish","type":"post","link":"https:\/\/www.curlybrace.com\/words\/2008\/03\/windows-vista-uac-goofiness\/","title":{"rendered":"Windows Vista UAC Goofiness"},"content":{"rendered":"<p>Windows Vista UAC is not always a predictable beast.<\/p>\n<p>Today I found out that if an executable doesn&#8217;t set <tt>level=\"asInvoker\"<\/tt> in its manifest, UAC confirmation will kick in if any of the following substrings appear in the filename:<\/p>\n<ul>\n<li>setup<\/li>\n<li>install<\/li>\n<li>update<\/li>\n<\/ul>\n<p>A digital signature does not affect this behavior.<\/p>\n<p>Besides adding &#8220;asInvoker&#8221; to the manifest, another workaround is to rename the executable to remove the trigger word.  For example, renaming <tt>MyProductUpdater.exe<\/tt> to <tt>MyProductRenewal.exe<\/tt> will (for now) bypass the UAC logic.<\/p>\n<p>Note that this in no way bypasses the protections of UAC.  Functions which perform some task which requires UAC-approval will simply fail.  This will only be useful if you have an update tool which <b>only<\/b> updates user-owned resources, since that doesn&#8217;t require UAC-approval.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Windows Vista UAC is not always a predictable beast. Today I found out that if an executable doesn&#8217;t set level=&#8221;asInvoker&#8221; in its manifest, UAC confirmation will kick in if any of the following substrings appear in the filename: setup install &hellip; <a href=\"https:\/\/www.curlybrace.com\/words\/2008\/03\/windows-vista-uac-goofiness\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,199],"tags":[143,146,144,147,141,145,142,140],"class_list":["post-110","post","type-post","status-publish","format-standard","hentry","category-technology","category-win32-technology-2","tag-createprocess","tag-setup","tag-shellexecuteex","tag-shield-icon","tag-uac","tag-update","tag-user-access-control","tag-windows-vista"],"_links":{"self":[{"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/posts\/110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":1,"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":415,"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/posts\/110\/revisions\/415"}],"wp:attachment":[{"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.curlybrace.com\/words\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}