<div dir="ltr"><div>The attached patch is intended to fix the Visual Studio 2010, 2012,</div><div>and 2013 project generation for the /MANIFESTUAC:NO option.  I'd like</div><div>to request this for the master branch as well as a 2.X pushback.</div>
<div>(Note that my testing of this was with both the May-07-2014 master</div><div>code as well as a patch applied to the v2.8.12.2 tag.)</div><div><br></div><div>The assumptions of this change are:</div><div>    </div><div>
1. That the /MANIFESTUAC:NO linker option should result in the</div><div>   EnableUAC attribute being set to "false" and does not require</div><div>   the setting of UACUIAccess or UACExecutionLevel attributes (or</div>
<div>   any other attributes) to any particular value.</div><div><br></div><div>2. The problem is that the cmVSXXLinkFlagTable entries process</div><div>   the /MANIFESTUAC:NO option by matching the following three</div><div>
   rules in this order:</div><div><br></div><div>        {"EnableUAC", "MANIFESTUAC:NO", "", "false",</div><div>            cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},</div>
<div>        {"EnableUAC", "MANIFESTUAC:NO", "Enable User Account Control (UAC)", "",</div><div>            cmVS7FlagTable::UserValueRequired},</div><div>        {"EnableUAC", "MANIFESTUAC:", "", "true",</div>
<div>            cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},</div><div><br></div><div>    which results in the EnableUAC attribute being set to "true".</div><div><br></div><div>3. There are no versions of /MANIFESTUAC:NO where addition values</div>
<div>   are appended.  This is mentioned because my interpretation of</div><div>   the original code was that the cmVSXXLinkFlagTable entries</div><div>   for "MANIFESTUAC:NO" where the cmVS7FlagTable::UserValueRequired</div>
<div>   "special" value is set seemed to imply this (although I might</div><div>   have been misinterpreting the purpose of these entries).</div><div><br></div><div>Based on these, the proposed solution is to remove both of the</div>
<div>MANIFESTUAC:NO entries and replace them with one of the form:</div><div><br></div><div>        {"EnableUAC", "MANIFESTUAC:NO", "", "false", 0},</div><div><br></div><div>which would set EnableUAC to false and immediately stop processing</div>
<div>the /MANIFESTUAC:NO option.</div><div><br></div><div>Eric</div><div><br></div></div>