[windows] 고유 한 URL 프로토콜을 어떻게 만듭니 까? (예 : so : //…) [닫힘]

나는 보았다 :

  • http://www...
  • ftp://blah.blah...
  • file://blah.blah...
  • unreal://blah.blah...
  • mailto://blah.blah...

첫 번째 섹션은 무엇입니까 http?

내 자신을 등록 할 수 있습니까?



답변

가진 부는 HTTP://, FTP://등이 호출되어 URI 스킴

레지스트리를 통해 자신을 등록 할 수 있습니다.

HKEY_CLASSES_ROOT/
  your-protocol-name/
    (Default)    "URL:your-protocol-name Protocol"
    URL Protocol ""
    shell/
      open/
        command/
          (Default) PathToExecutable

출처 : https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml ,
http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx


답변

메모장을 열고 아래 코드를 붙여 넣으십시오. “YourApp”을 앱 이름으로 변경하십시오. YourApp.reg에 저장하고 탐색기에서 클릭하여 실행하십시오. 그게 다야! 건배! 어윈 한트 제스

REGEDIT4

[HKEY_CLASSES_ROOT\YourApp]
@="URL:YourApp Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\YourApp\DefaultIcon]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\""

[HKEY_CLASSES_ROOT\YourApp\shell]

[HKEY_CLASSES_ROOT\YourApp\shell\open]

[HKEY_CLASSES_ROOT\YourApp\shell\open\command]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" \"%6\" \"%7\" \"%8\" \"%9\""


답변

이것은 브라우저마다 다르며 IE와 Windows에서는 플러그 가능한 프로토콜 핸들러라고하는 것을 작성해야합니다.

기본 단계는 다음과 같습니다.

  1. IInternetProtocol 인터페이스를 구현하십시오.
  2. IInternetProtocolRoot 인터페이스를 구현하십시오.
  3. IClassFactory 인터페이스를 구현하십시오.
  4. 선택 과목. IInternetProtocolInfo 인터페이스를 구현하십시오. HTTP 프로토콜에 대한 지원은 트랜잭션 핸들러에서 제공합니다.
  5. IInternetProtocolInfo가 구현 된 경우 URL 보안 영역 관리자가 보안을 올바르게 처리 할 수 ​​있도록 PARSE_SECURITY_URL 및 PARSE_SECURITY_DOMAIN에 대한 지원을 제공하십시오. 프로토콜 핸들러의 코드를 작성하십시오.
  6. BINDF_NO_UI 및 BINDF_SILENTOPERATION을 지원하십시오.
  7. HKEY_CLASSES_ROOT \ PROTOCOLS \ Handler의 레지스트리에서 프로토콜 핸들러의 하위 키를 추가하십시오.
  8. 서브 키 아래에 문자열 값 CLSID를 작성하고 문자열을 프로토콜 핸들러의 CLSID로 설정하십시오.

창쪽에 대한 자세한 내용은 MSDN의 비동기 플러그 가능 프로토콜 정보를 참조하십시오 . Windows SDK에도 샘플이 있습니다.

빠른 구글도 codeproject http://www.codeproject.com/KB/IP/DataProtocol.aspx 에서이 기사를 보여주었습니다 .

마지막으로 보안 담당자로서이 코드를 전투 강화해야한다고 지적해야합니다. 관리 코드에서는 신뢰할 수 없으며 C ++에서는해야하므로 (VB6을 사용할 수 있다고 가정) 위험이 높습니다. 실제로이를 수행해야하는지 여부를 고려해야하며, 필요한 경우 신중하게 설계하고 안전하게 코딩하십시오. 공격자는 페이지에 링크를 포함시켜 사용자에게 전달되는 콘텐츠를 쉽게 제어 할 수 있습니다. 예를 들어 간단한 버퍼 오버플로가 있다면 아무도 이것을 더 잘 수행하지 못합니다.<a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>

VC8 이상 컴파일러에 포함 된 strsafe 및 새로운 보안 CRT 메소드 사용을 강력하게 고려하십시오. 내가 무슨 말을하는지 모른다면 http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx를 참조하십시오 .


답변

등록 된 URI 스킴 목록입니다 . 각각에는 RFC (문서를 정의하는 문서)가 있으며 거의 ​​표준입니다. RFC는 새로운 응용 프로그램 개발자 (브라우저, ftp 클라이언트 등)에게 지원해야 할 사항을 알려줍니다. 새로운 기본 수준 프로토콜이 필요한 경우 등록되지 않은 프로토콜을 사용할 수 있습니다. 다른 답변은 방법을 알려줍니다. 기존 프로토콜을 사용하여 많은 작업을 수행 할 수 있으므로 기존 구현을 얻을 수 있습니다.


답변

대부분의 Microsoft 제품 (Internet Explorer, Office, “파일 열기”대화 상자 등)의 경우 적절한 접두사가있는 URI를 열 때 실행할 응용 프로그램등록 할 수 있습니다 . 이것은 더 일반적인 설명 의 일부입니다 -자신의 프로토콜을 구현하는 방법.

Mozilla의 설명은 여기 , Java 여기에 있습니다 .


답변

이것을 프로토콜이라고합니다. 자신의 프로토콜을 만들지 못하게하는 유일한 방법은 다음과 같습니다.

  1. URL 형식과 실제 데이터 형식으로 해당 프로토콜을 이해하는 브라우저 또는 사용자 에이전트를 작성하십시오.
  2. 해당 프로토콜을 이해하는 서버 작성
  3. 브라우저와 서버가 계속 함께 작동 할 수 있도록 프로토콜 사양을 지정하는 것이 좋습니다.

Windows는 # 1을 매우 쉽게 만들어줍니다. 많은 경우에 이것이 실제로 필요한 전부입니다. 즉:

URL 프로토콜에 응용 프로그램 등록


답변

첫 번째 섹션을 프로토콜이라고하며, 직접 등록 할 수 있습니다. Windows에서 (C # 태그-미안한 모노 팬이 주어 졌다고 가정하고있는 경우) 레지스트리를 통해 수행 됩니다 .