개요
2024년부로 한글과 컴퓨터사에서는 아래아 한글 컨트롤 사용을 제한하였으나,
여전히 한글 컨트롤 사용이 잘 되고 있다 (?)
한글 컨트롤을 사용하여 작업하는 프로그램이 있는데 매번 한글 파일을 열 때마다 아래와 같은 문구가 출력된다.
여간 귀찮은 게 아니다... 이 문구가 출력되지 않게 없애야겠다.
이 것을 없애려면 한글과 컴퓨터사에서 배포한 보안 모듈을 한글 컨트롤 사용하는 프로그램에 레지스트리를 적용하면 된다.
그래서 이번 포스팅에는 이미 사용하지 않는 기술일 수도 있지만 내용을 정리해보려 한다.
이 글은 HwpCtrl 한글 컨트롤을 사용한 C# 프로그램의 보안 모듈을 설정하는 내용을 주제로 다룬다.
한글 HwpCtrl 보안 모듈 파일 설정
보안 모듈 파일 다운로드
원래는 한글과 컴퓨터 공식 홈페이지에서 제공했었지만,
한글 컨트롤 지원 종료라서 그런지 관련 페이지를 접속할 수 없어서
티스토리 블로그 luckygg 님의 글을 참고 및 파일을 다운로드하였다.
보안 모듈 저장 위치
다운로드한 파일(dll)을 자신의 프로젝트 경로의 exe가 실행되는 경로에 넣는다.
Debug 모드로 먼저 테스트를 할 테니 우선 Debug 폴더에 두자.
이후 배포 할 때는 exe파일이 있는 곳에 두면 된다.
레지스트리 경로 설정
다운로드한 dll파일의 레지스트리를 따로 등록하지 않아도 된다.
이 것은 씨샵에서 프로그래밍 코드로 등록할 것이기 때문이다.
다만, 해당 경로가 존재하는지 확인하여야 한다.
레지스트리 편집기를 열어보자.
- 윈도우키 + 'regedit' 검색하여 레지스트리 편집기 실행
레지스트리 편집기에서 아래의 경로가 존재하는지 확인한다.
컴퓨터\HKEY_CURRENT_USER\Software\HNC\HwpCtrl\Modules
- 없을 경우 존재하지 않는 경로부터 차례로 키 값을 추가하면 된다.
(우클릭 - 새로 만들기 - 키)
C# 프로젝트에서 보안 모듈 사용하기
한글 편집기의 보안 모듈 등록 코드
HwpCtrl 컨트롤이 사용되는 폼 가장 처음 초기화 때 설정해 주면 된다.
포스팅에서는 Form1 에서 한글 컨트롤을 사용하므로 Form1이 초기화될 때 바로 밑에 코드를 작성해 주었다.
설명은 주석에 달아놓았다.
/* 보안 모듈 설정 */
// HwpCtrl 보안 모듈 레지스트리 값 주소
string HNCModulePath = @"HKEY_CURRENT_USER\Software\HNC\HwpCtrl\Modules";
// 레지스트리 값 확인 : 레지스트리 값 주소, 레지스트리 이름, 저장할 경로
Microsoft.Win32.Registry.SetValue(HNCModulePath, "FilePathCheckerModule", Environment.CurrentDirectory + "\\FilePathCheckerModule.dll");
// 한글 컨트롤의 모듈 등록
axHwpCtrl1.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule");
실제 프로젝트에 적용한 코드
아래는 내 프로젝트에서 적용한 코드이다.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 한글 보안 모듈 설정
initHwpModule();
}
// 한글 편집기 접근 허용 출력 방지
void initHwpModule()
{
/* 보안 모듈 설정 */
// HwpCtrl 보안 모듈 레지스트리 경로
string HNCModulePath = @"HKEY_CURRENT_USER\Software\HNC\HwpCtrl\Modules";
// 레지스트리 값 설정 : 레지스트리 값 주소, 레지스트리 이름, 저장할 경로
Microsoft.Win32.Registry.SetValue(HNCModulePath, "FilePathCheckerModule", Environment.CurrentDirectory + "\\FilePathCheckerModule.dll");
// 한글 컨트롤의 모듈 등록
axHwpCtrl_origin.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule");
}
}
한글 컨트롤 보안 모듈 등록 트러블 슈팅
보안 모듈이 적용되지 않는다면 아래의 내용을 다시 확인해 보자.
1) FilePathCheckerModule.dll 파일 경로가 정확한 경로에 있는지 확인
- 경로를 등록하는 과정에서 이스케이프 문자열이 하나만 들어가서 경로(\) 경로가 인식되지 않을 수 있다.
2) C# 코드로 레지스트리 편집기에 등록된 값의 경로가 FilePathCheckerModule.dll 파일의 경로와 일치하는지 확인
- 1번과 동일하다. 또한, 다른 경로의 값을 넣도록 잘못 코딩했을 수도 있다.
3) 빌드되는 CPU의 비트 확인
- 나의 경우에는 32비트로 되어 있는 것을 Any CPU로 변경하였더니 잘 작동하였다.
참고
티스토리 블로그 luckgg 님 글 - [.Net] C# 한글과 컴퓨터 HwpCtrl 접근 허용 오류 해결하기
마이크로소프트 - .Net 8 공식 문서 - Microsoft.Win32 - Registry / Methods / Registry.SetValue Method