Name Last Update
..
README.txt Loading commit data...
hello.py Loading commit data...
setup.py Loading commit data...

README.txt

This is a sample for how to control Vista's user-access-control for your
py2exe created programs.

Execute 'python setup.py py2exe' to create various executables, all with
different manifest values. Each of these may behave slightly differently
when executed under Vista.

Important:
----------

There is an important difference between Python 2.6 versus
earlier versions.

Python 2.5 and before created executables will not have a manifest
by default, meaning a backwards compatibility virtualization mode
may be used by default. However, if you specify any value for 'uac_info'
this virtualization will be disabled as it will cause a manifest to be
created for the executable.

To demonstrate on Vista:

* Using an elevated process, create a temp directory under "C:\Program Files"
and copy the generated 'dist' directory to that temp dir.

* From a non-elevated command-prompt, execute:
c:\Program Files\temp\not_specified.exe -e foo

You will see an error dialog due to 'foo' being written to stderr. The
error dialog will tell you the log file was written to the
"C:\Program Files\temp" directory, but that log file will not exist
in that directory - instead, it will be in the
"C:\Users\{username}\AppData\Local\VirtualStore\Program Files (x86)\temp"
directory - Windows has virtualized the file-system. Similar things will
be able to be demonstrated with the registry.

* From a non-elevated command-prompt, execute:
c:\Program Files\temp\as_invoker.exe -e foo

You will see an error dialog, but it will be slightly different - it
will relate to a failure to open the log file in the "c:\Program Files\temp"
directory. In this case, Windows has *not* virtualized the file-system but
your process does not have permission to write in that directory, so it
fails to write a log file at all.

* From a non-elevated command-prompt, execute:
c:\Program Files\temp\admin_required.exe -e foo

You will be prompted to elevate the process, then a log file will be
written to "C:\Program Files\temp" as the permissions exists in the
elevated process.

NOTE: For Python 2.6 and later there is always a manifest, so virtualization
is always disabled. In other words, in Python 2.6, not_specified.exe will
work exactly like as_invoker.exe does for all versions.