C# - 한글 컨트롤(HwpCtrl) 파일 접근 허용 출력 문구 없애기 (Winform)

반응형

개요

2024년부로 한글과 컴퓨터사에서는 아래아 한글 컨트롤 사용을 제한하였으나,

여전히 한글 컨트롤 사용이 잘 되고 있다 (?)

한글 컨트롤을 사용하여 작업하는 프로그램이 있는데 매번 한글 파일을 열 때마다 아래와 같은 문구가 출력된다.

여간 귀찮은 게 아니다... 이 문구가 출력되지 않게 없애야겠다.

이 것을 없애려면 한글과 컴퓨터사에서 배포한 보안 모듈을 한글 컨트롤 사용하는 프로그램에 레지스트리를 적용하면 된다.

그래서 이번 포스팅에는 이미 사용하지 않는 기술일 수도 있지만 내용을 정리해보려 한다.

이 글은 HwpCtrl 한글 컨트롤을 사용한 C# 프로그램의 보안 모듈을 설정하는 내용을 주제로 다룬다.

<한글 컨트롤을 이용하여 한글 문서를 열 경우 출력되는 보안 관련 출력 문구>


한글 HwpCtrl 보안 모듈 파일 설정

보안 모듈 파일 다운로드

원래는 한글과 컴퓨터 공식 홈페이지에서 제공했었지만,

한글 컨트롤 지원 종료라서 그런지 관련 페이지를 접속할 수 없어서

티스토리 블로그 luckygg 님의 글을 참고 및 파일을 다운로드하였다.

FilePathCheckerModule.dll
0.21MB


보안 모듈 저장 위치

다운로드한 파일(dll)을 자신의 프로젝트 경로의 exe가 실행되는 경로에 넣는다.

Debug 모드로 먼저 테스트를 할 테니 우선 Debug 폴더에 두자.

이후 배포 할 때는 exe파일이 있는 곳에 두면 된다.

<dll 파일 저장 경로 예시>


레지스트리 경로 설정

다운로드한 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

 

반응형