How can I pass command-line arguments via file association in Vista 64?

后端 未结 4 804
孤独总比滥情好
孤独总比滥情好 2021-02-10 01:11

How can one pass command line arguments via file association in Vista 64?

I recently built a PC running Vista Ultimate 64-bit. I noticed several of the Perl scripts I t

4条回答
  •  南笙
    南笙 (楼主)
    2021-02-10 01:27

    I just tried ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi on my Vista 64 Ultimate and it worked.

    F:\prog\perl>foo.pl 1 2 3
    3 arguments read
    C:\Perl64\bin\perl.exe
    

    That means devio is right: it must be an "file association" issue;

    On an explorer, right-click on your .pl file and ask "Open with": use the "Perl Command Line interpreter" and it will work (and select "always use this program to open this type of file").

    To me, "Vista's file extension manager removed the ability to pass arguments to functions" seems wrong...


    I do see:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\Perl\shell\Open\command]
    @="\"C:\\Perl64\\bin\\perl.exe\" \"%1\" %*"
    

    Meaning if your installation did not put that kind of value in your registry, it is because:

    • you did not select the association during the setup of ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi
    • or your account has not enough privilege to write anything in the registry.

    Note:

    • it seems the regular extension manager on Vista does not pass argument (meaning \"C:\\Perl64\\bin\\perl.exe\" \"%1\" without the %* argument)
    • the registry addition is necessary as documented by the SO

提交回复
热议问题