当前位置:  开发笔记 > 开发工具 > 正文

在Windows 2003中的文件属性中重现已阻止的exe"unblock"选项

如何解决《在Windows2003中的文件属性中重现已阻止的exe"unblock"选项》经验,为你挑选了2个好方法。

当我将我的程序从我的网站下载到我的Windows 2003机器时,它上面有一个块,您必须右键单击exe,然后选择属性,然后选择"取消阻止"按钮.

我想在我的安装程序中添加检测文件被阻止的时间,因此没有足够的权限.

但我无法在这个需要解锁的状态下轻松地重现我的exe.

如何让unblock出现在我的exe上,以便我可以测试这个功能?



1> HitScan..:

这是使用NTFS文件流完成的.在下载的文件中添加了名为"Zone.Identifier"的流.当IE7下载某些类型的文件时,该流包含:

[ZoneTransfer]
ZoneId=3

设置它的最简单方法是创建一个包含其中内容的文本文件,并使用更多将其添加到备用流中.

Zone.Identifier.txt:

[ZoneTransfer]
ZoneId=3

命令:

more Zone.Identifier.txt > file.exe:Zone.Identifier

然后,您检查它的方法是尝试打开Zone.Identifier流并查找ZoneId = 3,或者只是假设如果流存在,您的用户将收到该警告.

同样重要的是要注意,这与权限无关.管理员看到相同的警告; 它完全与文件的来源和类型有关.当用户取消选中"打开此文件前始终询问"框,然后单击"运行"时,整个流消失.



2> 小智..:

有一个支持的API,在MSDN上有记录.在MSDN上搜索"持久区域标识符对象".基本上你CoCreateInstanceCLSID_PersistentZoneIdentifier和请求IPersistFile接口.然后IPersistFile::Load使用相关文件的名称进行调用.接下来,QI用于IZoneIdentifier接口并用于IZoneIdentifier::GetId获取文件的区域.如果没有"网络标记",你应该得到URLZONE_LOCAL_MACHINE.另一个回复中提到的ZoneId为3 URLZONE_INTERNET.(调用枚举URLZONE并在MSDN上记录,或参见sdk\inc\urlmon.h.)您可以通过调用IZoneIdentifier::RemoveIZoneIdentifier::SetId然后调用来删除或更改"Web标记" IPersistFile::Save.在MSDN上有关于所有这些的更多细节.祝好运!

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有