Menu

#529 windows script host behaviour changes after pywin32 install

open
nobody
None
5
2011-01-12
2011-01-12
No

Hi,

This problem has been reported on http://pythonforum.org/topic62-pywin32-and-windows-script-host-problem.html.

I'm experiencing the same problem.

The bug is reproductible (validated with http://surfnet.dl.sourceforge.net/sourceforge/pywin32/pywin32-214.win32-py2.5.exe\):

1- take a computer where pywin32 is not installed
2- open a cmd prompt and type "wscript //h:wscript" => you get a prompt telling you that the default script host has been changed
3- install http://surfnet.dl.sourceforge.net/sourceforge/pywin32/pywin32-214.win32-py2.5.exe
4- open a new cmd prompt and type "wscript //h:wscript" => you get "can't change the default script host"

This problem might seem minor but in my company we use this "wscript //h:wscript" command to silently install softwares on client computers. And, when this problem occurs, our silent installation fails.

I will gladly help but I don't have visual studio.

Best regards,

Cyrille

Discussion

  • Mark Hammond

    Mark Hammond - 2011-01-12

    I can't see how python could manage to do this. Some googling shows other people are having a similar issue without Python being installed - I wonder if the installation of *any* WSH-compatible scripting language is causing the problem?

    > I will gladly help but I don't have visual studio.

    You don't need visual studio - running wscript.exe like that shouldn't be loading Python at all (and certainly can't once it is uninstalled but the problem remains). I expect something we write to the registry isn't being cleaned up or something...

     
  • Christoph Gohlke

    Try rename or delete HKEY_CLASSES_ROOT\pysFile

     
  • Mark Hammond

    Mark Hammond - 2011-01-13

    In my (limited) testing, I unregistered the AXScript engine (python ...\axscript.py --unregister), which deletes that key and a number of others, and the problem remains. I can't verify it ever did work for me though...

     
  • Christoph Gohlke

    Seems that [HKEY_CLASSES_ROOT\pysFile\Shell\Open] and [HKEY_CLASSES_ROOT\pysFile\Shell\Open2] keys need to be set in the pywin32\com\win32comext\axscript\client\pyscript.py DllRegisterServer() function. The following registry file works for me on Windows 7:

    REGEDIT4

    [HKEY_CLASSES_ROOT\pysFile]
    @="Python Script File"

    [HKEY_CLASSES_ROOT\pysFile\ScriptEngine]
    @="Python"

    [HKEY_CLASSES_ROOT\pysFile\ShellEx]

    [HKEY_CLASSES_ROOT\pysFile\ShellEx\DropHandler]
    @="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

    [HKEY_CLASSES_ROOT\pysFile\ShellEx\PropertySheetHandlers]

    [HKEY_CLASSES_ROOT\pysFile\ShellEx\PropertySheetHandlers\WSHProps]
    @="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

    [HKEY_CLASSES_ROOT\pysFile\Shell\Open]

    [HKEY_CLASSES_ROOT\pysFile\Shell\Open\Command]
    @=hex(2):22,25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,32,5c,\ 57,53,63,72,69,70,74,2e,65,78,65,22,20,22,25,31,22,20,25,2a,00

    [HKEY_CLASSES_ROOT\pysFile\Shell\Open2]
    @=hex(2):4f,70,65,6e,20,26,77,69,74,68,20,43,6f,6d,6d,61,6e,64,20,50,72,6f,6d,\ 70,74,00
    "MUIVerb"=hex(2):40,25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,\ 33,32,5c,77,73,68,65,78,74,2e,64,6c,6c,2c,2d,34,35,31,31,00

    [HKEY_CLASSES_ROOT\pysFile\Shell\Open2\Command]
    @=hex(2):22,25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,32,5c,\ 43,53,63,72,69,70,74,2e,65,78,65,22,20,22,25,31,22,20,25,2a,00

     
  • Christoph Gohlke

    Just to be sure: "wscript //h:wscript" must be run as administrator to succeed.

     
  • Cyrille Bollu

    Cyrille Bollu - 2011-01-13

    >Just to be sure: "wscript //h:wscript" must be run as administrator to
    succeed.
    yes sure. I run it as local administrator

    Now, I've removed pywin32-214.win32-py25 from my computer and I can't manage to re-install it.

    I'll now reboot my computer to see if my python 2.6 & co. installation worked. If yes, I'll try your regedit trick.

    BR,

    Cyrille

     
  • Cyrille Bollu

    Cyrille Bollu - 2011-01-13

    Hi,

    Great!

    The registry changes did the trick.

    Many thanks!

    Cyrille

    PS: I let you close the bug

    ========================

    What I did:
    -------------

    Installed python-2.6
    Installed http://downloads.sourceforge.net/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe
    wscript //h:wscript => doesn't work (usual error)
    regedit
    wscript //h:wscript => works

    Note:
    ------

    In my case I only add to create the [HKEY_CLASSES_ROOT\pysFile\Shell] hive; The rest of [HKEY_CLASSES_ROOT\pysFile] was correct.

     
  • Mark Hammond

    Mark Hammond - 2011-04-26

    I still can't find a solution to this. FWIW, the note below about changing the registry is simply a workaround to the problem - it manually sets wscript as the default for .pys files but does not allow for the //h command to succeed in the future.

     
  • Christoph Gohlke

    That's strange. wscript //h: and cscript //h: commands do succeed for me after manually merging the registry file (Windows 7 Pro 64 bit). Maybe another registry key is incomplete on your system?

     
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.