You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10特定设备上Strawberry Perl无法打开文件写入问题排查

我遇到了一个非常奇怪的问题,测试用Perl脚本如下:

system('echo > echo.txt');

open(FILE, '>', "out.txt") or die "Can't open file ($^E)";
print FILE "Hello";
close(FILE);

忽略这段脚本写法不规范、未添加use strict和use warnings的问题,所有Perl脚本都存在相同异常。在一台安装了新版Windows10 Pro系统的设备上运行新版Strawberry Perl,执行结果符合预期,会生成echo.txt和out.txt两个文件;但在另一台同样运行Windows10、安装了最新版Strawberry Perl的设备上,脚本仅能生成echo.txt,后续open调用失败,$^E返回“访问被拒绝”(意大利语原文为“Accesso negato”),该问题在所有测试过的目录下都稳定复现。

我已经核查了目录权限:当前登录用户从父目录继承了完整权限,给Everyone组添加完全控制权限后问题依旧,以管理员身份打开命令提示符运行脚本也无效,我还测试了多块物理磁盘上的多个目录,均存在相同问题。
我尝试卸载重装Strawberry Perl,也没有解决问题。补充说明:这台故障设备是两周前刚全新安装的系统,此前未出现任何其他异常。
我到底哪里操作有误?应该是很简单的问题但我没发现,请问该怎么调试这个问题?

更新1

经过测试发现,脚本在c:\Users\...\Downloads目录下运行正常,但在c:\Users\...\Desktop及其子目录、其他用户创建的目录下均运行失败。
dir /q命令对两个目录的查询结果如下:

c:\Users\Flavia>dir /q
 Il volume nell'unità C non ha etichetta.
 Numero di serie del volume: 28CE-96F1

 Directory di c:\Users\Flavia

28.09.2021  14:33    <DIR>          BUILTIN\Administrators .
28.09.2021  14:33    <DIR>          NT AUTHORITY\SYSTEM    ..
[...]
29.09.2021  09:14    <DIR>          DESKTOP-TBFQ31Q\Flavia Desktop
[...]
29.09.2021  09:13    <DIR>          DESKTOP-TBFQ31Q\Flavia Downloads
[...]
               2 File      1’627’775 byte
              24 Directory  401’441’447’936 byte disponibili

两个目录的所有者相同,都是运行Perl脚本的用户。icacls的查询结果如下:

c:\Users\Flavia>icacls Desktop
Desktop NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
        BUILTIN\Administrators:(I)(OI)(CI)(F)
        DESKTOP-TBFQ31Q\Flavia:(I)(OI)(CI)(F)

Elaborazione completata per 1 file. Elaborazione non riuscita per 0 file

c:\Users\Flavia>icacls Downloads
Downloads NT AUTHORITY\SYSTEM:(OI)(CI)(F)
          BUILTIN\Administrators:(OI)(CI)(F)
          DESKTOP-TBFQ31Q\Flavia:(OI)(CI)(F)

Elaborazione completata per 1 file. Elaborazione non riuscita per 0 file

所有账号都拥有(F)完全控制权限,唯一差异是Desktop的权限带有(I)标记,该标记代表权限继承自父目录。我核对了正常运行的设备,其Desktop目录的icacls输出同样带有(I)标记,但脚本运行正常,因此该标记和故障无关。
我使用Process Monitor确认perl.exe尝试写入的路径正确,没有出现路径写错的情况,Desktop子目录下的故障现象和Desktop根目录完全一致。核查失败的perl.exe进程和执行成功的、由perl调用的cmd.exe进程,二者的所有者都符合预期;Downloads目录下perl.exe运行成功,进程信息和故障场景无差异,目前完全没有排查头绪。

更新2

经过和其他技术人员讨论,我怀疑是Windows10的安全功能阻止了特定perl.exe二进制文件的写入操作。我卸载了当前5.32.1.1版本的Strawberry Perl,重装了旧版本5.32.0.1,问题彻底解决。但另一台正常运行的设备安装的就是5.32.1.1版本,且两台设备使用的MSI安装包完全一致,原因不明。目前我的即时问题已经解决,但仍然不清楚故障根因和正确的调试方法。


内容的提问来源于stack exchange,提问作者Paolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:27:01