2016-08-11 7 views
6

新しいWindows 10 PCにActiveState Perlをインストールしました。私は自分のPCのいくつかにPerlと同じバージョンのPerlをインストールしました。それは私の会社の他のユーザーのPCの100台にインストールされています。私が作ったのと同じ正確なインストール。Windows 10のPerlスクリプトはエクスプローラから起動しますが、コマンドプロンプトは実行しません

Windows 10で初めてこれを試してみます。エクスプローラでPerlスクリプト(* .pl)をダブルクリックすると、コンソールウィンドウが開き、Perlがスクリプトを実行します。

また、Windowsのコマンドプロンプトでは、perl.exe script.plと入力するとスクリプトが正常に実行されます。しかし、script.plと入力しても何も起こりません。出力なし、エラーなし、タスクマネージャで表示されるperl.exeプロセスなし。

初めてPerlスクリプトを実行したとき(Windowsコマンドプロンプトから、script.plという構文を使用していると思います)、Windowsはこのファイルを開くためにどのプログラムを使用するかを尋ねるウィンドウを表示しました。 Perlがデフォルトで、OKをクリックしました。

私はWindows 7または8のウィンドウを見たことがないので、Windows 10に固有のものだと思っています。それで、ちょうどscript.plと入力するのをやめてしまうのです。 script.plを起動すると、適切なプログラムを選択するためにファイルの関連付けが必要ですが、perl.exe script.plと入力すると、perl.exeが直接起動されます。しかし、Windows 10は、 "あなたのデフォルトプログラムを選ぶ"ことは、コマンドプロンプトからファイルの関連付けを台無しにして実行している途中で起こっている。

なぜExplorerで動作するのかわからないが、私はそのデフォルトプログラムのことをクリアする必要があると確信している。私はのファイルをHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExtsの下にあるレジストリエントリを削除しましたが、それは役に立ちませんでした。

これはWindows 10でのより一般的な問題、またはおそらく私のインストール、または私が気づいていないグループポリシーのようです。

次のコマンドは、(管理者コマンドプロンプトで実行)は、Windows 10のWindows 8.1で罰金ではなく、仕事:

assoc .foo=Foobar 
ftype Foobar=C:\WINDOWS\system32\foo.bat %1 
echo @echo off > foo.bat 
echo echo The filename is %1 >> foo.bat 
echo hi > foo.foo 
foo.foo 

結果を出力する必要があります:

The filename is C:\WINDOWS\system32\foo.foo 

が、Windows 10はありません何もない。これは組み込みのアプリケーションをダウンロード/インストールされたEXEのBATスクリプトではなく、この方法で関連付けることしかできないようです。

+0

我々は '' script.pl'が正常に動作し始める使用script.pl' –

+0

を開始使用している場合に起こる何。 – jimtut

+0

Perl 5.20.2をアンインストールし、最新の(5.24.0)をインストールしましたが、変更はありません。また、perl.exeの代わりにnotepad.exeを開くようにレジストリのコマンドを変更しました。これはDOS( 'script.pl')から正しく動作します。 perl.exeを呼び出すアソシエーションで何かが混乱しているようですが、エクスプローラではなくDOSからしかありません。何とかwperl.exeを呼び出すことは可能でしょうか?しかし、レジストリでそれを見つけることができません... – jimtut

答えて

4

MicrosoftはWindows 10のレジストリ設定の極性を逆転させていることがわかりました。これは他のPerlプログラマも噛んでいます。ソリューションは、HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer \ InheritConsoleHandlesを "0"に設定することです。ここ

MSDNの記事:https://social.msdn.microsoft.com/Forums/en-US/f19d740d-21c8-4dc2-a9ab-d5c0527e932b/nasty-file-association-regression-bug-in-windows-10-console

0

PATHEXT環境変数に.plが含まれていることを確認してください。

+0

はい、そうです: 'PATHEXT = .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC; .PL' – jimtut

+1

PATHEXTは拡張子をファイル名から削除してもそれを実行できるようにするために必要でした。 DOSでファイル名を入力するだけで、JPGでもどんなファイルでも "実行"することができます。 – jimtut

関連する問題