gpt4 book ai didi

Windows 10 上的 Perl 脚本从资源管理器运行,但不是命令提示符

转载 作者:行者123 更新时间:2023-12-03 01:23:19 25 4
gpt4 key购买 nike

我已在新的 Windows 10 电脑上安装了 ActiveState Perl。我在自己的几台 PC 上安装了完全相同版本的 Perl,并且在我公司的 100 台其他用户的 PC 上也安装了它。完全相同的安装,由我创建。

这是第一次在 Windows 10 上尝试此操作。在资源管理器中双击 Perl 脚本 (*.pl) 的基本操作会导致控制台窗口打开并让 Perl 运行该脚本。

此外,在 Windows 命令提示符中,我可以输入 perl.exe script.pl,并且脚本运行良好。但是,当我只是输入 script.pl 时,什么也没有发生。没有输出,没有错误,任务管理器中没有可见的 perl.exe 进程。

我第一次运行 Perl 脚本(我相信,从 Windows 命令提示符,仅使用 script.pl 语法),Windows 弹出一个窗口,询问我想使用什么程序打开这个文件。 Perl 是默认值,我单击“确定”。

我从未在 Windows 7 或 8 中看到过该窗口,所以我认为这是 Windows 10 特有的东西,并且它以某种方式阻止我输入 script.pl 。因为,在启动 script.pl 时,我需要文件关联来选择正确的程序,但是当我输入 perl.exe script.pl 时,perl.exe 是直接启动。但是,当从命令提示符运行时,Windows 10“选择默认程序”的问题会弄乱文件关联,从而产生妨碍。

虽然不是 100% 确定它为什么可以在资源管理器中工作,但我很确定我需要清除默认程序。我删除了 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.pl 文件的注册表项,但这没有帮助。

这似乎是 Windows 10 的一个更常见的问题,或者可能只是我的安装问题,或者是我不知道的组策略问题。

以下命令(在管理命令提示符中运行)在 Windows 8.1 中运行良好,但在 Windows 10 中运行不佳:

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 脚本。

最佳答案

事实证明,微软颠倒了 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

关于Windows 10 上的 Perl 脚本从资源管理器运行,但不是命令提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com