문제

내 웹 사이트에서 Windows 2003 컴퓨터로 프로그램을 다운로드하면 블록이 있으며 EXE를 마우스 오른쪽 버튼으로 클릭 한 다음 속성을 마우스 오른쪽 버튼으로 클릭 한 다음 "Unblock"버튼을 선택해야합니다.

파일이 차단되었을 때 설치 프로그램에 감지를 추가하고 싶습니다. 따라서 충분한 권한이 없습니다.

그러나 나는 차단 해제 해야하는이 상태에서 내 exe를 얻는 것을 멍청하게 재현 할 수 없습니다.

이 기능을 테스트 할 수 있도록 EXE에 차단 해제가 표시되도록하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

이것은 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을 찾거나 스트림이 존재하면 사용자가 해당 경고를받을 것이라고 가정합니다.

또한 이것은 권한과 관련이 없다는 점에 유의해야합니다. 관리자는 동일한 경고를 봅니다. 파일의 소스와 유형을 전적으로 수행하는 것입니다. 사용자가 "이 파일을 열기 전에 항상 요청"상자를 선택 취소 한 다음 실행을 클릭하면 전체 스트림이 사라집니다.

다른 팁

MSDN에 문서화 된 지원되는 API가 있습니다. "영구 영역 식별자 개체"에 대해 MSDN에서 검색하십시오. 기본적으로 당신 CoCreateInstance ~와 함께 CLSID_PersistentZoneIdentifier 그리고 요청합니다 IPersistFile 상호 작용. 그런 다음 전화합니다 IPersistFile::Load 문제의 파일 이름이 있습니다. 다음으로, qi IZoneIdentifier 인터페이스 및 사용 IZoneIdentifier::GetId 파일의 영역을 얻습니다. "웹의 마크"가 없다면 URLZONE_LOCAL_MACHINE. 다른 답변에 언급 된 3의 Zoneid는 URLZONE_INTERNET. (열거는 호출됩니다 URLZONE 또한 MSDN에 문서화되거나 참조됩니다 sdk\inc\urlmon.h.) 전화를 통해 "웹의 마크"를 제거하거나 변경할 수 있습니다. IZoneIdentifier::Remove 또는 IZoneIdentifier::SetId 그런 다음 전화하십시오 IPersistFile::Save. MSDN에는이 모든 것에 대한 자세한 내용이 있습니다. 행운을 빕니다!

감사합니다. 많은 도움이되었습니다.

내용으로 배치 파일을 만들면 프로세스를 더 쉽게 만들 수 있습니다.

echo [ZoneTransfer] > Zone.Identifier
echo ZoneId=3 >> Zone.Identifier
more Zone.Identifier > %1:Zone.Identifier

이렇게하면 Zone.identifier가 생성되고 그에 따라 파일을 표시합니다.

실행하려면 파일 이름을 제공하기 만하면 파일을 Mark.bat이라고하는 경우 예를 들어

mark.bat myfile.txt
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top