Eryk Sun added the comment:

I can confirm that the CRT function construct_environment_block() does cause an 
access violation sometimes when no "=x:" shell variables are defined in the 
current environment. These "=x:" environment variables are the way that Windows 
emulates DOS per-drive working directories in a shell. The API itself never 
sets these variables; it only uses them if they're defined.

You should be able to avoid this bug by defining the environment variable 
"=C:". The simplest way to do this in Python is via os.chdir. For example:

    import os

    cwd = os.getcwd()
    try:
        os.chdir('C:')
    finally:
        os.chdir(cwd)

The implementation of os.chdir calls SetCurrentDirectoryW, which, for a 
drive-relative path such as "C:", will first look for an "=x:" environment 
variable and otherwise default to the root directory. After it changes the 
process current working directory, chdir() calls GetCurrentDirectoryW and 
SetEnvironmentVariableW to set the new value of the "=x:" variable.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue29908>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to