操作系统:Vista Business 64-BIT
编码: .NET和第三方EXE
问题:安全性
我已下载curl.exe以帮助我从亚马逊加载产品信息。 Curl.exe已经过预编译,不是.NET应用程序,因此我对卷曲构建的任何更改感到不自在。
关于问题。
当我执行CURL时,我得到这个对话框:
说:打开文件 - 安全警告 无法验证发布者。您确定要运行此软件吗? 运行或取消
无论是手动还是以编程方式运行软件,我都会收到此错误。
当我手动使用这个软件时,我可以解决这个问题,但是我试图自动化一个以编程方式运行它的进程,所以我想压制这个对话框。
在研究这个时我得到了很多关于IE设置调整的信息......但是我没有从我的浏览器运行任何东西,只是在windows中启动exe,所以这不是问题。
我还看到很多关于将不同域和服务器添加到允许列表的信息。这是在我自己的盒子(C:\ curl.exe)本地运行,所以这也不是问题。
我是我正在运行此框的管理员。
关于这一点的信息非常少。
编程说明:
我正在通过.NET运行这个文件:
string cmd = string.Empty;
cmd += @"--location --user username:userpass -C - ";
cmd += @"--digest -k https://assoc-datafeeds-na.amazon.com/datafeed/getFeed?filename=";
cmd += FeedName + ".gz ";
cmd += @"-o " + FeedFileFolder + FeedName + ".gz";
System.Diagnostics.Process proc; // Declare New Process
System.Diagnostics.ProcessStartInfo procInfo = new System.Diagnostics.ProcessStartInfo();
procInfo.UseShellExecute = true; //If this is false, only .exe's can be run.
procInfo.WorkingDirectory = "C:"; //execute notepad from the C: Drive
procInfo.FileName = "curl.exe"; // Program or Command to Execute.
procInfo.Arguments = cmd; //Command line arguments.
所以一种替代方案,如果我无法在Windows中更改设置以允许此未经验证的EXE而不使用数字签名,则可以调整我的procInfo以允许我禁止此对话框,但我还没有找到它...
任何想法......?
谢谢, 汤姆
答案 0 :(得分:7)
我相信IE会将名为Zone.Identifier的NTFS流附加到它下载的exe文件中。
您可以通过在命令提示符下键入以下内容来验证这一点:
more <exename.exe:Zone.Identifier
它将输出类似
的内容[ZoneTransfer]
ZoneId=3
我不知道如何在不使用实用软件的情况下删除NTFS流,我不打算在这里推荐,因为我没有使用过。您可以尝试通过
来清除它echo . >exename.exe:Zone.Identifier
或者只是将文件复制到FAT驱动器上,然后再关闭。 (最后,用于FAT格式的拇指杆!)
答案 1 :(得分:0)
Windows会跟踪二进制文件的来源,因此即使未从浏览器运行,下载的二进制文件仍会被标记为不安全。
从exe文件属性中,单击“取消阻止”。