Bemusing .EXE Compatibility Tab Behaviour

First, this is NOT a problem with Dopus, I see the same thing with Windows Explorer so I'm being cheeky and asking about it here in case someone has a quick idea about why it's happening.

I'm setting up to install Visual Studio 6 on Windows 10 (don't ask!) and following some instructions I've found for doing it, one step of which is:

"Go to the Setup folder we created on our Desktop and locate the file SETUP.EXE . Right click on this file and choose "Properties" , select the "Compatibility" tab ..."

and that's where the problem I hit.

There is no Compatibility tab shown for this .EXE when it's named SETUP.EXE, however change it's name to, say, "SETUP1.EXE" and it appears, change the name back to SETUP.EXE and Compatibility once again doesn't show.

In Windows 7 there's no such behaviour, it's Windows 10 only and I have absolutely no idea what could trigger it, so I thought I'd try to discover why .. surely it can't be the name SETUP is considered 'special' by Microsoft?

Probably part of the installer detection in Windows, making it treat setup.exe as a special name.

Well you surprise me if you're suggesting what I thought to be implausible, but I guess that's about the only explanation for it.

Thanks, I was just wondering if there was some 'feature' which I could usefully learn about.

It's documented here:

Quoting the relevant section (since Microsoft URLs always break when they move everything for no reason :slight_smile: ):

Installer Detection Technology

Installation programs are applications designed to deploy software, and most write to system directories and registry keys. These protected system locations are typically writeable only by an administrator user, which means that standard users do not have sufficient access to install programs. Windows Vista heuristically detects installation programs and requests administrator credentials or approval from the administrator user in order to run with access privileges. Windows Vista also heuristically detects updater and uninstallation programs. Note that a design goal of UAC is to prevent installations from being executed without the user's knowledge and consent since they write to protected areas of the file system and registry.

Installer Detection only applies to:

  1. 32 bit executables

  2. Applications without a requestedExecutionLevel

  3. Interactive processes running as a Standard User with LUA enabled

Before a 32 bit process is created, the following attributes are checked to determine whether it is an installer:

  • Filename includes keywords like install, setup, update, etc.
  • Keywords in the following Versioning Resource fields: Vendor, Company Name, Product Name, File Description, Original Filename, Internal Name, and Export Name.
  • Keywords in the side-by-side manifest embedded in the executable.
  • Keywords in specific StringTable entries linked in the executable.
  • Key attributes in the RC data linked in the executable.
  • Targeted sequences of bytes within the executable.