programing

나만의 URL 프로토콜을 만들려면 어떻게 해야 합니까?(예: so://...)

stoneblock 2023. 5. 9. 22:02

나만의 URL 프로토콜을 만들려면 어떻게 해야 합니까?(예: so://...)

본 적이 있습니다.

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

당신이 보는 첫 번째 섹션은 무엇입니까?http그와 비슷한 이름은?

제가 직접 등록할 수 있나요?

있는부분이 .HTTP://,FTP://등을 URI Scheme이라고 합니다.

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

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

메모장을 열고 아래 코드를 붙여넣습니다."내 앱"을 앱 이름으로 변경합니다.

당신의 앱.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 및 창에서 플러그형 프로토콜 처리기라고 하는 것을 만들어야 합니다.

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

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

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

빠른 구글은 또한 코드 프로젝트에 대한 이 기사를 보여주었습니다: 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>

strsafe와 VC8 이상 컴파일러에 포함된 새로운 보안 CRT 방법을 사용하는 것을 강력히 고려하십시오.제가 무슨 말을 하는지 전혀 모르시다면 http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx 을 보세요.

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

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

Mozilla에 대한 설명은 여기, Java - 여기있습니다.

그것은 프로토콜이라고 불립니다.자체 프로토콜을 만들 수 없는 유일한 이유는 다음과 같습니다.

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

Windows는 #1을 매우 쉽게 만들어 줍니다. 대부분의 경우 이것이 실제로 필요한 전부입니다.Viz:

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

첫 번째 섹션은 프로토콜이라고 하며, 자신의 섹션을 등록할 수 있습니다.Windows(C# 태그 - sorry Mono 팬을 고려할 때)에서는 레지스트리를 통해 수행됩니다.

그런 식으로 등록할 필요는 없습니다.저는 emule과 같은 많은 프로그램들이 그들만의 프로토콜 특정자를 만드는 것을 보았습니다.그런 다음 기본적으로 레지스트리에서 해당 프로토콜을 처리하는 프로그램에 대한 몇 가지 값을 설정하면 됩니다.프로토콜 지정자의 공식 등록부가 있는지 잘 모르겠습니다.사람들이 브라우저에서 앱을 열기를 원한다면 자신의 응용프로그램에 대한 프로토콜 지정자를 만드는 것을 막을 수 있는 것은 많지 않습니다.

언급URL : https://stackoverflow.com/questions/389204/how-do-i-create-my-own-url-protocol-e-g-so