Windows fully supports *user* customization of file associations and there is 
no concept of ownership. The first program installed that sets up an 
association will normally get it, and as of Win8 the next application will be 
blocked (and suggested to the user next time they open a file). Whether the 
other application stole the extension is irrelevant: a user is allowed to 
associate .py with something other than py.exe.

I'm also working off experience with Windows here, I haven't done any special 
research. It may be that the APIs will assume .exe if no extension is 
specified, but I'd be surprised if backwards compatibility with with DOS, which 
I assume included PATHEXT, hadn't been a consideration. The Run dialog uses 
ShellExecute, so you can test things there easily.

Sent from my Windows Phone
________________________________
From: Paul Moore<mailto:p.f.mo...@gmail.com>
Sent: ‎7/‎28/‎2013 1:00
To: Steve Dower<mailto:steve.do...@microsoft.com>
Cc: Martin v. Löwis<mailto:mar...@v.loewis.de>; Python 
Dev<mailto:python-dev@python.org>
Subject: Re: [Python-Dev] Adding Python scripts to PATHEXT on Windows

On 28 July 2013 00:30, Steve Dower 
<steve.do...@microsoft.com<mailto:steve.do...@microsoft.com>> wrote:
> And if you change the association after the fact, you're presumably just as 
> capable
> of changing PATHEXT.

Not if the association is changed by another installer (presumably with the 
user's explicit permission). It would be very easy for people to go a long time 
without noticing this until some program does ShellExecute(...) on a name that 
happens to be a Python script and Visual Studio pops open...

Mph. I'd argue that as Python "owns" the .py extension, any other application 
that changes the default action of .py scripts without both making that 
behaviour optional and making it off by default, is at least unfriendly and 
arguably even broken. But that's just a matter of opinion...

As regards ShellExecute, I don't know how that is affected by PATHEXT. I looked 
quite hard and couldn't find complete "official" documentation on how PATHEXT 
is supposed to work, so I'm working a bit on experiment and best guesses here 
:-( I'll go and check what the ShellExecute documentation says on the matter 
(but I'm surprised - I got the impression that PATHEXT was purely a console 
mechanism, so I don't quite understand why ShellExecute would use it).

Paul
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to