Windows에서 사용자 지정 URL 프로토콜을 등록하려면 어떻게 해야 합니까?
전자 메일이나 웹 페이지에서 링크를 클릭할 때 응용 프로그램이 열리고 URL의 매개 변수가 전달되도록 Windows에 사용자 지정 프로토콜을 등록하려면 어떻게 해야 합니까?
에 가다
Start
그때에Find
유형regedit
-> 레지스트리 편집기를 열어야 합니다.클릭
HKEY_CLASSES_ROOT
그리고나서New
->Key
- 키에서 URL을 호출할 소문자 이름을 지정합니다(나의 경우는 다음과 같습니다).
testus://sdfsdfsdf
그런 다음 을 클릭합니다.testus
-> 그러면New
->String Value
추가URL Protocol
가치가 없는
- 그런 다음 프로토콜에서 했던 것처럼 항목을 더 추가합니다.
New
->Key
) 및 다음과 같은 계층 구조 생성testus
->shell
->open
->command
안쪽에command
바꾸다(Default)
가 있는 길로.exe
당신이 시작하고 싶은 것은, 만약 당신이 당신의 exe에 매개 변수를 전달하고 싶다면, exe에 대한 경로를 랩합니다.""
추가"%1"
모양:"c:\testing\test.exe" "%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-here
chrome에 콘솔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
'programing' 카테고리의 다른 글
postgresql의 월별 및 연도별 쿼리 결과 그룹화 (0) | 2023.05.17 |
---|---|
Node.js의 ECONNRESET 오류를 디버깅하려면 어떻게 해야 합니까? (0) | 2023.05.17 |
운영 모드를 활성화하는 방법은 무엇입니까? (0) | 2023.05.17 |
명령을 실행하도록 bash의 현재 작업 디렉토리 일시 변경 (0) | 2023.05.17 |
여러 변수를 동일한 값에 할당하는 Python?행동을 나열 (0) | 2023.05.17 |