웹 브라우저에서 서버접속 원격프로그램 auto실행 방법

windows 10 Windows OS

이글에서는 윈도우즈 클리이언트 Web browser에 표시되는 HTML의 접속링크를 만들어 웹 화면에서 링크를 클릭하면 자동으로 로컬 어플리케이션을 실행하는 방법을 설명합니다.

기존URL(mailto:) 이해하기

예를 들면 다음과 같은링크를 만들어 클릭하면 현재 등록된 메일 클라이언트 프로그램이 기동됩니다.

<a href="mailto:test@sample.com?subject=테스트제목">테스트내용</a>
테스트내용

위 링크를 클릭하면 Windows OS 버전 또는 기본 연결 어플리케이션 설정에 따라 표시되는 화면이 다르지만 다음과 같은 화면이 표시됩니다.

신규URL(testreg:)작성하기

위에서 설명한 기존 mailto:를 모방하여 새로운 접속링크를 만들면 웹 브라우저에서 링크를 클릭하여 notepad,ftp클라이언트 프로그램, 원격 테스크톱 연결, ssh클리이언트 프로그램을 자동으로 기동할 수 있습니다. 좀 더 깊이 들어가면 각 프로그램이 유저/패스워드를 전달받는 매개변수(parameter, 파라미터)가 존재한다면 호줄시 인수(argument, 인자)로 넘겨주면 자동으로 인증까지 실행할 수 있습니다.

레지스트리 등록하기

HKEY_CLASSES_ROOT 레지스트리 키 아래의 URL Protocol 설정은 커스텀 URI 스킴(프로토콜) CUSTOM URI Schemes을 정의하는 데 사용됩니다.
이를 통해 특정 URL 패턴이 웹 브라우저에서 열릴 때 실행될 프로그램을 지정할 수 있습니다.
예를 들어, mailto: URL이 클릭되면 기본 메일 클라이언트가 열리는 것과 같은 방식으로 작동합니다.

우선 필요한 레지스트리를 작성합니다.

HKEY_CLASSES_ROOT\myprotocol (여기서 myprotocol은 커스텀 URI 스킴을 나타냅니다.)
URL Protocol: (이 값은 빈 문자열일 수 있으며, 이 키의 존재 자체가 이 프로토콜 이름을 URL 프로토콜로 식별합니다.)
shell
open
command
실행할 명령 줄, 예를 들어 “C:\Program Files\MyApp\myapp.exe” “%1”
여기서 %1은 URL 전체가 됩니다.
이 구조를 통해, 커스텀 URI 스킴에 대한 클릭 이벤트가 발생했을 때,
운영 체제는 해당 경로를 따라 command 키의 기본값에 지정된 프로그램을 실행합니다.
“C:\Program Files\MyApp\myapp.exe” “%1” 명령어는 myapp.exe 프로그램을 실행하고,
사용자가 클릭한 커스텀 URL을 인자로 넘깁니다.

위의 레지스트리가 등록되면 캡쳐와 같이 testreg키 아래 shell키, 그 아래에 open키, 그 아래에 command키를 가지는 트리 구조가 되며 testreg는 문자열 값 URL Protocol을 가지고 command는 실행할 로컬 파일의 패스와 인수값을 가지게 됩니다. 가장 위의 testreg키의 이름은 자유지만 그 외 나머지 키들은 그대로 적어주어야 합니다.

아래의 내용은 .reg 파일의 구조입니다. 레지스트리 등록은 Microsoft 서포트 페이지를 참조하세요.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\rdpconn]
@="URL:rdpconn"
"EditFlags"=dword:00000002
"FriendlyTypeName"=""
"URL Protocol"=""

[HKEY_CLASSES_ROOT\rdpconn\DefaultIcon]
@=""

[HKEY_CLASSES_ROOT\rdpconn\shell]
@="open"

[HKEY_CLASSES_ROOT\rdpconn\shell\open]

[HKEY_CLASSES_ROOT\rdpconn\shell\open\command]
@="\"C:\app\myrdp\rdbconn.bat\" \"%1\""

HTML 태그 추가하기

HTML 내에는 다양한 하이퍼링크가 존재하지만 <a> 태그를 이용하여 설명하겠습니다. 아래와 같은 태그를 넣어주고 브라우저 상에서 링크를 클릭하면 testreg 레지스트리에서 지정한 프로그램이 실행됩니다.

<a href="testreg:넘겨줄 인수 값">URI Scheme 테스트</a>

HTML에 추가해서 외부에 공개하더라도 모든 사용자의 레지스트리에 같은 레지스트리가 등록되어있지 않기 때문에 호출에 실패하여 기동하지 않습니다. 모든 사용자에게 같은 기능을 제공하기 위해서는 사용자의 컴퓨터에 동일한 레지스트리를 추가하는 인스톨 과정이 필요합니다.

제목과 URL을 복사했습니다