programing

Windows에서 사용자 지정 URL 프로토콜을 등록하려면 어떻게 해야 합니까?

instargram 2023. 5. 17. 22:27
반응형

Windows에서 사용자 지정 URL 프로토콜을 등록하려면 어떻게 해야 합니까?

전자 메일이나 웹 페이지에서 링크를 클릭할 때 응용 프로그램이 열리고 URL의 매개 변수가 전달되도록 Windows에 사용자 지정 프로토콜을 등록하려면 어떻게 해야 합니까?

  1. 에 가다Start그때에Find유형regedit-> 레지스트리 편집기를 열어야 합니다.

  2. 클릭HKEY_CLASSES_ROOT그리고나서New->Key

여기에 이미지 설명 입력

  1. 키에서 URL을 호출할 소문자 이름을 지정합니다(나의 경우는 다음과 같습니다).testus://sdfsdfsdf그런 다음 을 클릭합니다.testus-> 그러면New->String Value추가URL Protocol가치가 없는

여기에 이미지 설명 입력

  1. 그런 다음 프로토콜에서 했던 것처럼 항목을 더 추가합니다. New->Key) 및 다음과 같은 계층 구조 생성testus->shell->open->command안쪽에command바꾸다(Default)가 있는 길로.exe당신이 시작하고 싶은 것은, 만약 당신이 당신의 exe에 매개 변수를 전달하고 싶다면, exe에 대한 경로를 랩합니다.""추가 "%1"모양:"c:\testing\test.exe" "%1"

여기에 이미지 설명 입력

  1. 작동하는지 테스트하려면 Internet Explorer(Chrome 또는 Firefox 아님)로 이동하고 다음을 입력합니다.testus:have_you_seen_this_man이것은 당신을 해고할 것입니다..exe(이 작업을 수행할 것인지 묻는 메시지가 표시됩니다. 예라고 대답합니다.) 그리고 인수로 전달합니다.testus://have_you_seen_this_man.

테스트할 콘솔 앱 샘플은 다음과 같습니다.

using System;

namespace Testing
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args!= null && args.Length > 0)
            Console.WriteLine(args[0]);
            Console.ReadKey();
        }
    }
}

시간이 좀 절약되기를 바랍니다.

[더 이상 사용되지 않음 - MSDN 정보가 보안 문제를 해결하는 새 페이지로 대체됨]

MSDN 링크는 좋지만, 보안 정보가 완전하지 않습니다.처리기 등록에는 %1이 아닌 "%1"이 포함되어야 합니다.사용자 지정 프로토콜 처리기를 호출하기 전에 일부 URL 소스가 %20을 잘못 디코딩하므로 이는 보안 조치입니다.

PS. URL 매개 변수뿐만 아니라 전체 URL을 얻을 수 있습니다.그러나 URL은 이미 언급된 %20->공간 변환 외에도 일부 잘못된 처리를 할 수 있습니다.URL 구문 설계를 보수적으로 수행하는 데 도움이 됩니다.임의로 //를 넣지 마십시오. 그렇지 않으면 파일://가 엉망이 될 것입니다.

연결을 만들기 위해 .reg 파일을 원하는 사용자는 아래를 참조하십시오.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\duck]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\duck\shell]
[HKEY_CLASSES_ROOT\duck\shell\open]
[HKEY_CLASSES_ROOT\duck\shell\open\command] 
@="\"C:\\Users\\duck\\source\\repos\\ConsoleApp1\\ConsoleApp1\\bin\\Debug\\net6.0\\ConsoleApp1.exe\" \"%1\""

그것을 메모장에 붙여넣고 파일을 -> -> duck.reg로 저장한 다음 실행합니다.실행 후 입력할 때duck://arg-herechrome에 콘솔App1.exe가 "arg-here"를 인수로 사용하여 실행됩니다.exe 경로에는 이중 슬래시가 필요하며 이중 따옴표는 이스케이프해야 합니다.

Edge(크롬 버전) 및 Chrome이 포함된 Windows 11에서 테스트 및 작동

이를 위한 npm 모듈이 있습니다.

링크 : https://www.npmjs.com/package/protocol-registry

따라서 nodejs에서 이를 수행하려면 아래 코드를 실행하기만 하면 됩니다.

먼저 설치

npm i protocol-registry

그런 다음 아래 코드를 사용하여 입력 파일을 등록합니다.

const path = require('path');

const ProtocolRegistry = require('protocol-registry');

console.log('Registering...');
// Registers the Protocol
ProtocolRegistry.register({
    protocol: 'testproto', // sets protocol for your command , testproto://**
    command: `node ${path.join(__dirname, './index.js')} $_URL_`, // $_URL_ will the replaces by the url used to initiate it
    override: true, // Use this with caution as it will destroy all previous Registrations on this protocol
    terminal: true, // Use this to run your command inside a terminal
    script: false
}).then(async () => {
    console.log('Successfully registered');
});

그런 다음 누군가가 testproto://test를 연 다음 새 터미널이 실행된다고 가정합니다.

node yourapp/index.js testproto://test

또한 다른 모든 운영 체제도 지원합니다.

언급URL : https://stackoverflow.com/questions/80650/how-do-i-register-a-custom-url-protocol-in-windows

반응형