DetailPage-MSS-KB

기술 자료

기술 자료: 257757 - 마지막 검토: 2013년 7월 16일 화요일 - 수정: 15.6

이 문서는 이전에 다음 ID로 출판되었음: KR257757

이 페이지에서

요약

개발자는 Microsoft Office 자동화를 사용하여 Office 제품에 기본 제공된 기능을 이용하는 사용자 지정 솔루션을 만들 수 있습니다. 클라이언트 시스템에서는 비교적 쉽게 이러한 프로그래밍 방식의 개발을 구현할 수 있지만 Microsoft Active Server Pages(ASP), DCOM 또는 Windows NT 서비스와 같은 서버 쪽 코드에서 자동화를 수행하는 경우에는 많은 문제가 발생할 수 있습니다.

이 문서에서는 개발자가 직면할 문제에 대해 설명하고, 성능을 높일 수 있는 자동화 대안을 제공하며, 서버 쪽 자동화를 피할 수 없는 경우에 Office를 구성하는 방법을 제안합니다. 그러나 다음 제안들은 정보를 제공할 목적으로만 제공됩니다. Microsoft는 Office의 서버 쪽 자동화를 권장하거나 지원하지 않습니다.

참고 여기에서 "서버 쪽"이라는 용어는 Microsoft Windows NT 워크스테이션이나 Microsoft Windows 2000 워크스테이션에서 실행되는 코드에도 적용됩니다. 단, 이때는 코드가 사용자가 로그온하는 대화형 스테이션이 아닌 WinStation에서 실행되어야 합니다. 예를 들어, SYSTEM 계정의 작업 스케줄러에서 시작되는 코드는 "서버 쪽" ASP 또는 DCOM 코드와 같은 환경에서 실행되므로 동일한 문제가 많이 발생할 수 있습니다. WinStation과 COM에 대한 자세한 내용은 "추가 정보" 절과 "참조" 절을 참조하십시오.

추가 정보

Microsoft Office의 현재 버전은 모두 클라이언트 워크스테이션의 최종 사용자 제품으로 실행되도록 설계, 테스트 및 구성되었습니다. Microsoft Office의 현재 버전은 대화형 데스크톱과 사용자 프로필을 가정하기 때문에 무인 상태로 실행되도록 설계된 서버 쪽 구성 요소에서 요구하는 재입력 또는 보안 수준을 제공하지 못합니다.

Microsoft는 Microsoft Office 응용 프로그램의 자동화를 모든 무인, 비대화형 클라이언트 응용 프로그램이나 구성 요소(ASP, DCOM 및 NT 서비스 포함)에서 실행하는 것을 권장 또는 지원하지 않습니다. 이런 환경에서 Office의 자동화를 실행할 경우 불안정한 동작을 보이거나 교착 상태에 빠질 수 있기 때문입니다.

서버 쪽 컨텍스트에서 실행되는 솔루션을 작성 중인 경우에는 가능하면 안전하게 무인 실행되도록 만들어진 구성 요소를 사용하거나 최소한 코드의 일부라도 클라이언트 쪽에서 실행되도록 하는 대안을 찾아야 합니다. Office 응용 프로그램을 서버 쪽 솔루션에서 사용하도록 선택하면 성공적으로 실행하기 위해 필요한 기능이 많이 사라져 전체 솔루션의 안정성이 위태로워집니다.

Office의 서버 쪽 자동화를 사용할 때의 문제점

서버 쪽 솔루션에서 Office를 사용하려는 개발자는 환경으로 인해 예상과 다르게 작동하는 5가지 주요 문제점을 알고 있어야 합니다. 코드가 성공적으로 실행되기 위해서는 이러한 문제점을 해결하고 그 영향력을 가능한 한 최소화해야 합니다. 한 가지 해결책으로는 이러한 문제점을 모두 해결할 수 없으므로 응용 프로그램을 빌드할 때 이 문제점들을 주의 깊게 숙지하고 있어야 하며 설계에 따라 문제점의 우선 순위를 다르게 책정해야 합니다.
  • 사용자 ID: 자동화로 시작되는 경우라도 Office 응응 프로그램은 실행될 때 사용자 ID를 가정합니다. 또한 해당 응용 프로그램을 시작한 사용자가 설정한 사용자 레지스트리 하이브에 따라 도구 모음, 메뉴, 옵션, 프린터 및 일부 추가 기능을 초기화하려고 합니다. 대부분의 서비스는 SYSTEM 또는 IWAM_[servername] 계정처럼 사용자 프로필이 없는 계정에서 실행되므로 시작 시 Office에서 제대로 초기화하지 못하고 CreateObject 또는 CoCreateInstance에 대한 오류를 반환할 수도 있습니다. Office 응용 프로그램이 사용자 프로필 없이 시작될 수 있지만 이 경우 다른 기능이 제대로 작동하지 못할 수 있습니다. 서비스에서 Office를 자동화할 계획인 경우에는 사용자 프로필을 로드한 상태에서 실행되도록 사용자 코드나 Office를 구성해야 합니다.
  • 데스크톱과의 대화형 작업: Office 응용 프로그램은 대화형 데스크톱 아래에서 실행되고 있다고 가정하므로 일부 상황에서 특정 자동화 기능이 제대로 작동하기 위해서는 시각화되어야 합니다. Office는 예기치 않은 오류가 발생하거나 기능을 완료하기 위해 지정되지 않은 매개 변수가 필요한 경우에 사용자에게 수행할 작업을 묻는 모달 대화 상자를 표시하도록 설계되었습니다. 특정 코딩 절차를 실행하여 이러한 상황이 발생할 가능성을 줄일 수 있지만 완전히 예방하지는 못합니다. 이 문제 하나만으로도 서버 쪽 환경에서 Office 응용 프로그램을 실행하는 것은 매우 위험하며 지원되지 않습니다.
  • 재입력 및 확장성: 서버 쪽 구성 요소는 복수 클라이언트에 대해 최소의 오버헤드와 높은 처리 속도를 가진 고도로 재입력이 가능한 다중 스레드 COM 구성 요소여야 합니다. 그러나 Office 응용 프로그램은 거의 모든 면에서 정확히 이와 반대입니다. 이 응용 프로그램은 재입력이 가능하지도 않을 뿐더러 단일 클라이언트에 대해 다양하지만 리소스를 집중적으로 사용하는 기능을 제공하도록 설계된 STA 기반 자동화 서버입니다. Office 응용 프로그램은 서버 쪽 솔루션으로서 확장성이 거의 없으며 메모리 등의 중요한 요소에 고정적인 한계가 있어 구성을 통해 변경할 수 없습니다. 무엇보다도 Office 응용 프로그램은 메모리 매핑된 파일, 기본 서식 파일 및 추가 기능, 공유된 자동화 서버 등 전체 리소스를 사용하기 때문에 동시에 실행할 수 있는 인스턴스 수가 제한되며, 멀티 클라이언트 환경에서 구성된 경우 리소스가 서로 난립하는 현상이 발생합니다. 동시에 둘 이상의 Office 응용 프로그램 인스턴스를 실행할 계획인 개발자는 잠재적 교착 상태나 데이터 손상을 피하기 위해 Office 응용 프로그램에 대한 액세스를 "풀링"하거나 순차적으로 액세스하는 것을 고려해야 합니다.
  • 회복성 및 안정성: Office 2000, Office XP, Office 2003 및 Office 2007은 최종 사용자가 더 쉽게 설치하고 자체 복구할 수 있도록 MSI(Microsoft Windows Installer) 기술을 사용합니다. MSI는 "최초 사용 시 설치" 개념을 도입하여 시스템 또는 주로 실제 사용자를 위하여 런타임에 기능을 동적으로 설치하고 구성합니다. 따라서 서버 쪽 환경에서는 성능이 저하되고, 사용자에게 설치할 것인지 묻는 대화 상자나 적절한 설치 디스크를 삽입하라는 대화 상자가 나타날 가능성이 높아집니다. MSI 기능은 최종 사용자 제품으로서 Office의 회복성을 높이기 위해 설계되었지만 서버 쪽 환경에서 구현할 경우에는 역효과를 냅니다. 또한 서버 쪽 환경에 맞게 설계하거나 테스트하지 않았기 때문에 Office의 안정성을 일반적으로 보증할 수 없습니다. Office를 네트워크 서버에서 서비스 구성 요소로 사용하면 해당 시스템의 안정성이 떨어지며 그 결과 해당 네트워크 전체의 안정성이 감소할 수도 있습니다. Office를 서버 쪽에서 자동화할 계획이라면 전용 컴퓨터에서만 실행할 수 있도록 분리하여 중요한 기능에 영향을 미치지 않으며 다시 시작해도 문제가 없도록 합니다.
  • 서버 쪽 보안: Office 응용 프로그램은 서버 쪽 사용을 위해 설계된 것이 아니기 때문에 분산 구성 요소에 발생하는 보안 문제를 고려하지 않습니다. Office는 들어오는 요청을 인증하지 않으므로 사용자가 자신의 서버 쪽 코드에서 무의식적으로 매크로를 실행하거나 매크로를 실행할 수 있는 다른 서버를 시작하는 것을 막지 못합니다. 익명 웹에서 서버로 업로드되는 파일은 결코 열어서는 안 됩니다. 마지막으로 설정한 보안 설정에 따라 서버가 모든 권한을 가진 관리자 또는 시스템 컨텍스트에서 매크로를 실행하여 네트워크를 손상시킬 수 있습니다. 또한 Office는 처리 속도를 높이기 위해 클라이언트 인증 정보를 캐시할 수 있는 다수의 클라이언트 쪽 구성 요소(예: Simple MAPI, WinInet, MSDAIPP)를 사용합니다. Office가 서버 쪽으로 자동화될 경우 둘 이상의 클라이언트가 한 인스턴스를 사용할 수 있습니다. 해당 세션에 대한 인증 정보는 캐시되므로 한 클라이언트가 다른 클라이언트의 캐시된 자격 증명을 사용할 수 있고 그 결과 다른 사용자를 가장하여 부여받지 않은 액세스 권한을 얻을 수 있습니다.
기술적 문제 외에 라이선스에 관한 이러한 설계도 고려해야 합니다. 현재의 라이선스 지침은 클라이언트가 Office의 라이선스 사본을 갖고 있지 않으면 서버에서 해당 클라이언트의 요청을 처리할 수 없도록 금지하고 있습니다. 서버 쪽 자동화를 사용하여 라이선스가 없는 워크스테이션에 Office 기능을 제공하는 것은 Microsoft 소프트웨어 사용 조건에서 다루고 있지 않습니다.

이러한 큰 문제 외에도 기본 Office 설치를 수정하지 않으면 사용자가 서버 쪽으로 자동화하려고 할 때마다 다음과 같은 공통 오류 중 하나가 나타날 가능성이 높습니다.
  • CreateObject/CoCreateInstance가 다음과 같은 런타임 오류 메시지 중 하나를 반환하며 자동화를 위해 시작될 수 없습니다.

    Microsoft VB(Visual Basic) 또는 ASP의 경우:
    • 메시지 1
      런타임 오류 '429': ActiveX 구성 요소는 개체를 만들 수 없습니다.
    • 메시지 2
      런타임 오류 '70': 사용 권한이 없습니다.
    Microsoft Visual C 또는 Visual C++의 경우:
    • 메시지 1
      CO_E_SERVER_EXEC_FAILURE (0x80080005): 서버 실행이 실패했습니다.
    • 메시지 2
      E_ACCESSDENIED (0x80070005): 액세스할 수 없습니다.
    시작 컨텍스트에 지정된 사용자 프로필이나 사용자 ID 없이 실행하는 서버 쪽 코드에는 적절한 DCOM 사용 권한이 없기 때문에 이러한 오류가 나타납니다.
  • Office 문서를 열면 다음과 같은 오류 중 하나가 나타납니다.
    • 메시지 1
      런타임 오류 '5981'(0x800A175D): 저장된 매크로를 열 수 없습니다.
    • 메시지 2
      런타임 오류 '1004': '~' 개체의 '~' 메서드에서 오류가 발생했습니다.
    일반적으로 이러한 오류 메시지는 사용 권한이 충분하지 않거나 VBA 구성 요소 등록이 부족하여 VBA를 초기화하는 데 실패했기 때문에 나타나며, 두 오류 메시지 모두 사용자가 사용자 프로필이 없는 계정에서 코드를 실행하고(문제 #1) 사용자 토큰에 대화형 SID가 없을 때(문제 #2) 일반적으로 나타납니다.

  • CreateObject/CoCreateInstance가 중단되어 완료되지 않거나 반환하는 데 시간이 많이 걸립니다. 어떤 서버에서는 빨리 만들어지지만 Windows (NT) 이벤트 로그에 1004 오류가 나타납니다.

    문제는 주로 서버 쪽 코드를 실행하는 비대화형 데스크톱의 모달 대화 상자에 있습니다(문제 #2). 해당 대화 상자가 MSI 구성 요소 설치 문제(레지스트리 항목 누락 또는 파일 이미지 손상)로 인해 나타난 경우, 설치 지점을 찾을 수 없으면 설치 CD를 요청하고 하나 이상의 구성 요소를 다시 설치합니다(문제 #4).
  • 특정 기능에 예기치 못한 오류가 발생하거나 계속 응답하지 않습니다.

    비대화형 데스크톱의 경우(문제 #2) 프린터, 매핑된 드라이브, OLE 포함 개체, 클립보드 등의 특정 리소스가 사용할 수 없게 되거나 리소스의 상태가 정의되지 않을 수도 있습니다. 마찬가지로 사용자 프로필이 없으면(문제 #1) 네트워크 리소스를 사용할 수 없고 사용 권한이 최소화됩니다.
  • 요청을 여러 개 실행하거나 스트레스 테스트를 하면 코드를 생성할 때나 Office 응용 프로그램을 종료할 때 코드가 실패, 중지 또는 충돌할 수도 있습니다. 이렇게 코드가 실패, 중지 또는 충돌한 경우 메모리에서 해당 프로세스가 계속 실행되어 종료되지 않거나 자동화된 응용 프로그램의 모든 인스턴스가 해당 지점부터 작동하지 않습니다.

    Office 응용 프로그램은 전체 리소스를 공유하기 때문에(문제 #3) 시작, 시스템 종료, 인쇄, 내보내기, OLE 링크 업데이트(모든 DDE 알림 포함) 등의 특정 기능은 순차적으로 액세스해야 합니다.
여기에 나열한 문제나 메시지 외에 다른 문제나 메시지가 나타날 수도 있지만 이러한 문제나 메시지도 대부분 앞에서 설명한 다섯 가지 문제의 결과로 발생합니다. 이러한 유형의 오류를 해결하려면 개발자는 클라이언트 쪽 상태를 시뮬레이션하도록 Office의 운영 환경을 구성하거나, 모든 서버 쪽 코드에서 Office 응용 프로그램을 제거하고 대신 확장성이 높은 구성 요소(또는 클라이언트 쪽 자동화)를 사용해야 합니다.

서버 쪽 실행 시 자동화 대안 사용

서버 쪽 솔루션을 개발해야 하는 경우 개발자는 Office 자동화의 대안을 찾는 것이 좋습니다. Office 설계의 한계 때문에 Office 구성을 변경하더라도 모든 문제가 해결되지는 않습니다. Microsoft는 Office를 서버 쪽에 설치하지 않고도 자동화보다 효율적이고 빠르게 공통 작업을 수행할 수 있는 몇 가지 대안을 권장하고 있습니다. Office를 프로젝트의 서버 쪽 구성 요소로 사용하기 전에 대안을 고려해 보십시오.

대부분의 서버 쪽 자동화 작업에는 문서 만들기 작업이 포함되어 있습니다. Office 2000 이상에서는 HTML이 기본 문서 형식으로 지원되므로 대부분의 문서는 HTML 형식으로 작성되고 필요한 경우 XML(Extensible Markup Language) 마크업을 사용합니다. 그리고 결과 텍스트가 Office에 표시되도록 MIME(Multipurpose Internet Mail Extensions) 형식을 사용하여 이 문서 스트림이 클라이언트로 전송됩니다. 서버에서 ASP만 사용해도 문서를 편집하고 저장하고 서버로 돌려보낼 수 있습니다. 이전 버전의 Office에서도 RTF 같이 쉽게 조작할 수 있는 텍스트 형식을 사용하여 동일한 작업을 수행할 수 있습니다.

일부 원래 이진 형식은 더 빠르고 확장성이 높은 OWC(Office Web Components) 또는 ADO(ActiveX Data Objects)를 사용하여 편집할 수 있습니다. 자동화를 사용하지 않고도 문서 등록 정보를 보거나 변경할 수 있으며, FPSE(FrontPage Server Extensions) 또는 DAV(Distributed Authoring and Versioning)를 사용하여 파일을 관리하고 파일 버전을 관리할 수 있습니다. 자동화가 중요하게 작용하는 경우 대부분의 작업은 클라이언트로 오프로드될 수 있으며, 각 사용자가 자신의 컨텍스트에서 자신만의 설정을 사용하여 작업을 실행하므로 시스템의 안정성과 확장성이 높아집니다.

자동화 대안에 대한 자세한 내용과 구현 방법에 대한 예제는 Microsoft 기술 자료의 다음 문서를 참조하십시오.
270906  (http://support.microsoft.com/kb/270906/ ) ASP를 사용하여 RTF(서식 있는 텍스트 형식) 문서를 생성하여 Microsoft Word에 스트리밍하는 방법
198703  (http://support.microsoft.com/kb/198703/ ) 클라이언트쪽 VBScript에서 Excel을 자동화하는 방법
199841  (http://support.microsoft.com/kb/199841/ ) MIME 형식으로 IE에서 Excel을 사용하여 ASP 결과를 표시하는 방법
224351  (http://support.microsoft.com/kb/224351/ ) Office가 설치되어 있지 않은 경우 Dsofile.dll 파일을 사용하여 Office 문서 속성을 편집할 수 있다
244049  (http://support.microsoft.com/kb/244049/ ) 서버쪽 차트 만들기 기능을 사용하여 동적으로 차트를 만드는 방법
258187  (http://support.microsoft.com/kb/258187/ ) OWebComp.exe에 Office 2000 웹 구성 요소에 대한 스크립팅 예제가 포함되어 있다
260239  (http://support.microsoft.com/kb/260239/ ) Active Server Pages 페이지를 사용하여 Excel 파일을 만들 때 셀 데이터 서식을 지정하는 방법
278973  (http://support.microsoft.com/kb/278973/ ) 예제: ExcelADO는 Excel 통합 문서에서 ADO를 사용하여 데이터를 읽고 쓰는 방법을 보여준다
286023  (http://support.microsoft.com/kb/286023/ ) Internet Explorer에서 Word 자동화를 위한 VB ActiveX 구성 요소를 사용하는 방법
288130  (http://support.microsoft.com/kb/288130/ ) ASP를 사용하여 클라이언트쪽 디스플레이를 위한 스프레드시트 XML을 만드는 방법
317316  (http://support.microsoft.com/kb/317316/ ) 서버 쪽에서 사용하는 경우 Office 웹 구성 요소의 제한 사항
자세한 내용은 다음 MSDN(Microsoft Developer Network) 웹 사이트를 참조하십시오.
Open XML 개체 모델을 사용하여 서버 쪽 문서 생성 솔루션 작성(1/2)
http://msdn2.microsoft.com/en-us/library/bb735940.aspx (http://msdn2.microsoft.com/en-us/library/bb735940.aspx) (영문)

Open XML 개체 모델을 사용하여 서버 쪽 문서 생성 솔루션 작성(2/2)
http://msdn2.microsoft.com/en-us/library/bb735939.aspx (http://msdn2.microsoft.com/en-us/library/bb735939.aspx) (영문)

Basic Instincts: 서버 쪽 Word 2007 문서 생성
http://msdn.microsoft.com/ko-kr/magazine/cc163526.aspx (http://msdn.microsoft.com/ko-kr/magazine/cc163526.aspx)

Office Space: Office Open XML 파일 만들기
http://msdn.microsoft.com/ko-kr/magazine/cc163478.aspx (http://msdn.microsoft.com/ko-kr/magazine/cc163478.aspx)

Microsoft SDK for Open XML Formats 개요
http://msdn2.microsoft.com/en-us/library/bb448854.aspx (http://msdn2.microsoft.com/en-us/library/bb448854.aspx) (영문)
이전 버전의 Office(Office 2000, Office XP 및 Office 2003)를 실행하는 사용자는 Office Open XML 문서를 열기 위한 호환 기능 팩을 다운로드하고 설치할 수 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
Word, Excel 및 PowerPoint 2007 파일 형식용 Microsoft Office 호환 기능 팩
http://office.microsoft.com/ko-kr/products/HA101686761042.aspx (http://office.microsoft.com/ko-kr/products/HA101686761042.aspx)
서버 쪽에서 이진 Office 파일을 만들어야 하는 경우 도움이 될 수 있는 구성 요소를 제공하는 타사 공급업체가 있습니다. 다음은 이러한 서비스를 제공하는 잘 알려진 공급업체의 목록입니다. 이 목록은 정보를 제공할 목적으로만 제공되며, 이 목록에 모든 해당 공급업체가 포함되어 있는 것은 아닙니다. 다른 공급업체가 더 적합한 유사 서비스를 제공할 수도 있으므로 가능한 타사 솔루션을 모두 조사하여 비즈니스 요구에 가장 적합한 공급업체를 찾아야 합니다. 다음 공급업체는 현재 고유 Office 파일 형식을 프로그래밍 방식으로 만들고 편집할 수 있는 솔루션을 제공합니다. 타사 공급업체에 대한 자세한 내용을 보려면 다음 웹 사이트를 방문하십시오.

Aia Software B.V.
http://www.aia-itp.com (http://www.aia-itp.com)
Polar
http://www.polarsoftware.com (http://www.polarsoftware.com)
SoftArtisans
http://www.softartisans.com (http://www.softartisans.com)
SyncFusion
http://www.syncfusion.com (http://www.syncfusion.com)
Keylogix
http://www.activedocs.com (http://www.activedocs.com)
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.

서버 쪽에서 실행되도록 Office 구성

적절한 다른 솔루션이 없어서 Office의 서버 쪽 자동화를 계속 진행하기로 결정한 경우 앞에서 제기한 문제점을 대부분 해결해야 서버 쪽 환경에서 성공적으로 실행할 수 있습니다. 문제의 대부분이 구성과 관련되어 있기 때문에 한 가지 방법만으로는 모든 시스템에 해당하는 모든 경우에서 서버 쪽의 Office 자동화가 실행되게 할 수 없습니다. 일부 구성 설정이 다른 옵션과 충돌할 수도 있으며 각 방법마다 장단점이 있기 때문입니다. 해당 환경에서 가장 잘 작동하는 방법을 찾기 위해 테스트를 해야 할 수도 있습니다.

서버 쪽 코드에서 Office를 자동화하려면 일반적으로 다음 작업을 수행해야 합니다.
  • Office를 분리하고 캡슐화하도록 프로젝트를 설계합니다.
  • 문제를 예상하고 동적으로 수정하도록 프로젝트를 코딩합니다.
  • 프로젝트에 Office가 사용할 특정 사용자 ID와 프로필을 제공합니다.
Office 자동화를 사용하려면 프로젝트를 설계할 때 서버 쪽 보안과 Office 재입력 불가능 문제를 고려해야 합니다. Office의 사용을 직렬화 개체(Mutex 또는 사용자 정의 잠금 원본)에 의해 제어되는 특정 인스턴스로 제한하거나, 필요할 때 응용 프로그램 개체를 실행하지만 직렬화해야 하는 해당 응용 프로그램 개체의 요소를 제어할 수 있는 사용자 지정 개체 핸들러(또는 브로커)에서 엄격하게 제어되는 인스턴스 집합을 "풀링"하십시오. Office는 사용 상태를 일정한 정도로만 가정하기 때문에 여러 클라이언트가 동시에 특정 작업(시작, 시스템 종료, 인쇄 등)을 수행하는 경우 충돌이 발생하거나, 하나 이상의 호출 스레드가 교착 상태에 빠질 수 있습니다. 이때 사용자는 정보를 요청하는 오류 메시지나 모든 인스턴스에서 사용하는 전체 리소스의 해제를 거부하는 오류 메시지를 확인할 수 있습니다.

따라서 첫 번째 단계는 서버 쪽 설계에서 Office 자동화의 사용을 제한하고 해당 프로세스를 중요하지 않은 컴퓨터로 분리하여 필요한 경우 다시 시작할 수 있도록 하는 것입니다. 또한 중지된 호출 클라이언트가 필수 시스템 서비스의 성능을 감소시키지 않도록 호출 컨텍스트도 분리합니다. 예를 들어, 시스템 스레드를 사용하는 IIS 내에서 직접 자동화하지 마십시오. 대신 코드를 고유 스레드에서 실행하도록 분리하여 실패할 때도 IIS 기능을 감소시키지 않게 합니다. 또한 사용자 설계에서 보안과 인증을 적용하는 방법도 고려합니다. Office가 서버 쪽 보안을 수행하지 않기 때문에 ASP 페이지, 스크립트 파일 등과 같은 "신뢰할 수 있는" 코드 모듈로만 Office 응용 프로그램의 자동화 인스턴스를 만들고, 해당 메서드를 호출해야 하며, Office에서 문서를 열기 전에 모든 문서가 안전해야 합니다. 서버에 있는 Office 응용 프로그램은 항상 높은 수준의 보안을 사용하여 실행되어야 합니다. 보안을 수행하도록 설계하지 않으면 서버가 위험에 노출됩니다.

디자인이 적용된 후에는 문제가 발생하지 않게 막고 오류가 발생할 때도 오류를 처리하도록 방어적으로 코딩해야 합니다. 값이 누락되거나 상충되는 값을 사용하면 Office에서 사용자에게 추가 정보를 요청하는 경우도 있으므로 사용자 코드에서 선택적 매개 변수 값을 전달하게 하십시오. 모든 함수에서 오류 잡기를 사용하여 오류 상태를 처리하고 레지스트리 파일이나 INI 파일에서 사용자 설정을 통해 설정하거나 해제할 수 있는 로깅 코드를 사용하여 이러한 오류를 기록합니다. Office가 아닌 다른 프로그램에서 오류 대화 상자를 표시하는 동작을 수행한 경우(예를 들어, 인쇄 작업 중 프린터에 용지가 없으면 프린터 드라이버가 대화 상자를 표시하게 함), 시간 제한 또는 두 번째 스레드를 사용해서 진행 상태를 모니터링하여 가능한 교착 상태를 처리하도록 준비합니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
259971  (http://support.microsoft.com/kb/259971/ ) Visual Basic을 사용하여 Office 응용 프로그램이 표시하는 대화 상자를 해제하는 방법
로깅 코드를 사용하여 문제를 추적하고 프로그램을 디버깅합니다. 사용자 지정 개체 풀을 사용하는 경우 성능 및 확장성 테스트를 추가하여 사용을 모니터링하고 모든 클라이언트에 영향을 미치는 문제를 로깅할 수 있습니다. 또한 전반적인 안정성을 강화해야 하는 경우 중앙 컨트롤러를 통해 Office의 잘못된 인스턴스를 종료하고 다시 만들 수 있습니다.

프로그램을 구축할 준비가 되었으면 적절한 사용자 컨텍스트를 실행하도록 서버에서 Office가 제대로 구성되었는지 확인하십시오. Office에는 사용자 프로필이 필요하므로 성공적으로 자동화하기 위해서는 Office에 사용자 프로필을 로드해야 합니다. 서버 쪽 환경에서 작업할 경우에는 다음 세 가지 방법으로 Office에 사용자 프로필을 로드할 수 있습니다.
  • 자동화로 시작되는 Office 응용 프로그램의 모든 인스턴스를 대화형 사용자로 실행되도록 구성합니다.
  • 자동화로 시작되는 Office 응용 프로그램의 모든 인스턴스를 특정 사용자로 실행되도록 구성합니다.
  • MTS/COM+ 패키지를 사용하여 특정 사용자로 실행되도록 코드를 구성합니다. 이 경우 Office 응용 프로그램을 시작하는 사용자 ID가 상속됩니다.
첫 번째 옵션은 Office에 ID와 특정 데스크톱과의 대화형 작업을 모두 제공하며 Office를 시각화하여 로컬로 로그온한 사용자가 모든 대화 상자나 GPF 오류를 보고 기록할 수 있으므로 디버깅 시 선호되는 옵션입니다. 일부 상황에서는 이 옵션이 적절하지 못할 수도 있으므로 성공적으로 실행하기 위해서는 대화형 사용자가 로그온해 있어야 합니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
288366  (http://support.microsoft.com/kb/288366/ ) HOWTO: 대화형 사용자 계정에서 실행되도록 Office 응용 프로그램 구성
두 번째 옵션은 특정 사용자를 할당하지만 대화형 작업을 허용하지 않습니다. Office가 보이지 않는 데스크톱의 새로운 WinStation에서 할당된 사용자로 시작됩니다. 이 옵션에서는 기본적으로 사용자 레지스트리 하이브가 로드되었는지 COM/DCOM에서 확인하지 않으므로 이를 확인하도록 추가 구성해야 합니다. 설정이 해당 시스템 전체에 적용되므로 다른 프로그램과 충돌할 수도 있습니다. 이 방법으로 Office를 구성하는 것에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
288367  (http://support.microsoft.com/kb/288367/ ) 특정 사용자 계정에서 실행되도록 Office 응용 프로그램을 구성하는 방법
세 번째 옵션을 사용하면 특정 웹 사이트나 코드 모듈에 ID를 할당하여 Office에 대해 전체적으로 고정된 ID를 설정하는 것을 피할 수 있습니다. Office는 이전에 구성된 ID와 이전에 로드된 레지스트리 하이브가 있는 한 올바른 ID와 로드로 실행됩니다. 일반적으로 이 옵션이 가장 유연성 있고 안전하지만 이전 옵션처럼 볼 수 있는 데스크톱과의 대화형 작업을 제공하지 못하므로 추가 설정이 필요합니다. 이 방법으로 Office를 구성하는 것에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
288368  (http://support.microsoft.com/kb/288368/ ) COM+/MTS 패키지에서 자동화를 위한 Office 응용 프로그램을 구성하는 방법
사용자 요구에 맞는 옵션과 가장 좋은 솔루션 배포 방법은 사용자가 직접 평가해야 합니다. 여기에 제공된 정보로는 클라이언트의 모든 문제를 해결할 수 없으며 구축하기 전에 철저히 테스트할 것을 권장합니다.

참조

서버 쪽 자동화에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
169321  (http://support.microsoft.com/kb/169321/ ) INFO: COM 서버 활성화 및 NT 윈도우 스테이션

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft Outlook 97 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft Office Project Standard 2007
  • Microsoft Office Project Professional 2007
  • Microsoft Office Project Standard 2003
  • Microsoft Office Project Professional 2003
  • Microsoft Project 2002 Standard Edition
  • Microsoft Project 2000 Standard Edition
  • Microsoft Project 98 Standard Edition
  • Microsoft Office Visio Standard 2007
  • Microsoft Office Visio Professional 2007
  • Microsoft Office Visio Professional 2003
  • Microsoft Visio 2002 Standard Edition
  • Microsoft Visio 2002 Professional Edition
  • Microsoft MapPoint 2006 Standard Edition
  • Microsoft MapPoint 2004 Standard Edition
  • Microsoft MapPoint 2002 Standard Edition
  • Microsoft MapPoint 2001 Standard Edition
  • Microsoft MapPoint 2000 Standard Edition
  • Microsoft Office OneNote 2003
  • Microsoft Office OneNote 2007
  • Microsoft Office InfoPath 2007
키워드: 
kbqfe kbautomation kbprogramming kbservice KB257757
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.