如果从互联网上下载,Windows 控制台 .exe 将无法运行

如果从互联网上下载,Windows 控制台 .exe 将无法运行

我在 Windows Server 2003 上有一个夜间作业,它通过从 Amazon S3 下载其 .exe 来自动更新自身。我注意到,当它执行下载并尝试运行新下载的 .exe 时,它​​会立即返回到命令行,而实际上不会运行任何内容。

我可以通过将新版本的代码直接粘贴在服务器上并观察其成功执行,然后将其上传到“更新”服务器,运行引导程序,然后运行.exe并观察其执行失败来验证这一点。

我只能假设这是由于 Windows 保护我免于运行来自其受信任区域之外的代码。如何配置它以允许执行来自此特定外部位置的代码?

谢谢!

答案1

Windows 通过使用文件流来跟踪文件是否已从互联网下载(或甚至从 zip 文件解压)。有一个与 .exe 关联的流,它有效地表示“我来自 www.example.com”。

如果要为该文件禁用它,并且由于它无论如何都是批处理作业,则可以使用以下命令删除该流

http://www.microsoft.com/technet/sysinternals/utilities/Streams.mspx

高血压

答案2

也许可以通过将您的 S3 URL 添加到您的信任区域来做到这一点?

答案3

尝试以下操作:转到新下载的文件,右键单击并调出属性,检查是否有“解除阻止”按钮。如果您下载了可执行文件,则需要明确允许其运行。我不确定如何在脚本中执行此操作,因此这不会解决您的问题,但可能会让您更接近问题。

答案4

如果您想禁用区域检查,请设置环境变量 SEE_MASK_NOZONECHECKS=1,但不要这样做。通过此脚本运行您的可执行文件:

set oShell= CreateObject("Wscript.Shell")

set oEnv = oShell.Environment("PROCESS")

oEnv("SEE_MASK_NOZONECHECKS") = 1

oShell.Run "c:\myexecutablepath\myexecutable.exe",0,True

oEnv.Remove("SEE_MASK_NOZONECHECKS")

相关内容