我在Windows Server 2003上有一个夜间工作,通过从Amazon S3下载.exe来自动更新。 我注意到,当它执行下载并尝试运行新下载的.exe时,它立即被踢回到命令行,而没有实际运行任何东西。
我可以通过直接在服务器上粘贴新版本的代码并观察它成功执行,然后将其上传到“更新”服务器,运行引导程序然后运行.exe并观察它无法执行来validation。
我只能假设这是由于Windows保护我不受信任区域之外的代码运行。 如何configuration它以允许来自这个特定外部位置的代码执行?
谢谢!
Windows通过使用文件stream来跟踪文件是否已经从互联网上下载(甚至是从zip文件中扩展而来)。 有一个与.exe相关联的stream,它有效地表示“我来自www.example.com”。
如果您想为该文件禁用它,并且由于它是批量作业,您可以使用删除stream
http://www.microsoft.com/technet/sysinternals/utilities/Streams.mspx
HTH
也许通过将您的S3 URL添加到您的信任区域?
试试这个:去新下载的文件,右键单击并调出属性,检查是否有一个button“解锁”。 如果你下载一个可执行文件,你需要特别允许它运行。 我不知道如何在脚本中这样做,所以这不会解决你的问题,但可能会让你更接近。
如果要禁用区域检查,请设置环境variablesSEE_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")