如何在從互聯網下載的可執行文件上設置MOTW(網絡標記)?如何在可執行文件上設置MOTW
回答
它在RFC 3514中沒有明確規定,但今天由於安全性要求的提高,實現應該在網絡傳輸中確實保留RFC3514位的存在或不存在的信息,當他們將文件寫入磁盤時,反之亦然,從磁盤讀取。
這個問題並不是專門針對這一點,而是關於如何將其實際寫入NTFS流和.exe。 – Rup 2010-12-10 20:52:30
你在說什麼http://www.faqs.org/rfcs/rfc3514.html?你有沒有注意到它是在4月1日寫的? – 2011-02-17 09:32:11
你有沒有注意到,當有人引用4月RFC給你時,他們完全意識到這是不重要的? :D - 畢竟,MOTW聽起來就像惡魔一樣。 – user502515 2011-02-23 21:35:48
該數據與可執行文件一起存儲在NTFS alternative file stream中。該流稱爲Zone.Identifier:
Windows®InternetExplorer®使用流名稱Zone.Identifier來存儲URL安全區域。
完全限定形式是sample.txt:Zone.Identifier:$DATA
流的形式是一個簡單的文本流:[ZoneTransfer] ZoneId=3
MSDN-SECZONES給出了安全區域的說明。
(注:原具有結腸和「區」之間的空間,但我認爲這是錯誤的。)
您可以在UrlMon.h的ZoneIds在SDK;有這相當於
enum URLZONE {
URLZONE_LOCAL_MACHINE = 0,
URLZONE_INTRANET = 1,
URLZONE_TRUSTED = 2,
URLZONE_INTERNET = 3,
URLZONE_RESTRICTED = 4
};
枚舉(原來使用前值+ 1,而不是絕對值。)
正如漢斯說,在評論中,這些可以使用標準的Win32文件API的CreateFile和寫入WriteFile。 火狐始終寫入上網區,3區 - Firefox code here(MPL/LGPL/GPL三證):
bool SetInternetZoneIdentifier(const FilePath& full_path) {
const DWORD kShare = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE;
std::wstring path = full_path.value() + L":Zone.Identifier";
HANDLE file = CreateFile(path.c_str(), GENERIC_WRITE, kShare, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == file)
return false;
const char kIdentifier[] = "[ZoneTransfer]\nZoneId=3";
DWORD written = 0;
BOOL result = WriteFile(file, kIdentifier, arraysize(kIdentifier), &written,
NULL);
CloseHandle(file);
if (!result || written != arraysize(kIdentifier)) {
DCHECK(FALSE);
return false;
}
return true;
}
或者有一個IE的COM API CLSID_PersistentZoneIdentifier你可以用它來抽象所有這一切爲您服務。
+1,很好。對於Windows使用\ r \ n。 – 2010-12-12 13:04:59
也只是要添加,[這裏是一種替代方法](https://blogs.msdn.microsoft.com/oldnewthing/20131104-00/?p=2753)使用COM來做同樣的事情。 – c00000fd 2016-07-06 06:45:07
- 1. svn:如何設置文件上的可執行位?
- 2. RStudio:如何在Windows 7中設置Git可執行文件?
- 3. Aptana 3 - 設置PHP可執行文件
- 4. 設置上的文件可執行位在水銀
- 5. 如何在Android設備上安裝SQLite可執行文件?
- 6. 如何爲VC++項目設置啓動可執行文件?
- 7. 如何設置Delphi 2006可執行文件的代碼頁
- 8. 如何設置項目的可執行文件名?
- 9. 如何設置eclipse cpp生成多個可執行文件
- 10. 如何在Linux上的java文件中執行可執行文件?
- 11. 設置Gradle以在Android Studio中運行Java可執行文件
- 12. 如何在運行CUDA可執行文件時選擇設備?
- 13. 如何在Raspberry Pi上運行可執行文件
- 14. 可執行文件如何在O/S上運行?
- 15. 如何在Windows XP上使用Perl運行可執行文件?
- 16. 如何在Android上使用GDB運行Dalvik可執行文件?
- 17. 如何運行在OS X上的可執行文件
- 18. 如何在Raspbian的python上運行可執行文件?
- 19. 可執行文件設置用戶ID-上執行選項沒有設置有效的UID
- 20. 如何在測試中用可執行文件替換可執行文件?
- 21. 如何在Android上執行obj文件
- 22. 如何在/ sdcard上執行文件?
- 23. 在可執行文件上使用dlopen()
- 24. 在github上託管可執行文件
- 25. 錯誤java.lang.NullPointerException在可執行文件上
- 26. 在Xcode中設置活動的可執行文件
- 27. 在Xcode中設置默認的活動可執行文件
- 28. 在Visual C++ 2010設置可執行文件圖標快速
- 29. 在linux中設置默認`node`可執行文件
- 30. 如何設置在PowerBuilder項目中的可執行文件PowerGen公司
你必須先加熱熨斗。 – 2010-12-10 19:47:23
我想手動設置文件上的MOTW標誌。 – yoshi99 2010-12-10 19:47:54
您的意思是文件屬性頁面上的安全部分「此文件來自另一臺計算機......」?它存儲在另一個文件流中http://superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a/38494 #38494我不確定什麼API訪問,但有一些文檔http://msdn.microsoft.com/en-us/library/aa364404%28VS.85%29.aspx – Rup 2010-12-10 19:49:51