prosource

Windows 7 .net Excel.SaveAs() HRESULT 오류 예외: 0x800A03EC

probook 2023. 10. 10. 20:38
반응형

Windows 7 .net Excel.SaveAs() HRESULT 오류 예외: 0x800A03EC

배경:
회사에서 오래된 하드 드라이브를 구워서 새로 구우려고 합니다.그럼 기계를 다시 만들어야겠네요.관리자는 제 컴퓨터가 작동하지 않는 동안 제가 사용하던 대여용 노트북에 Windows 7을 설치했습니다.그런데 문제가 생겼어요.

우리는 마이크로소프트를 활용하는 앱을 상당히 많이 보유하고 있습니다.사무실.인터럽트.엑셀레퍼런스.지금까지 몇 가지 오류를 넘겼지만 지난 며칠 동안(첫 번째 재구축 후 실제로 하드 드라이브 장애가 발생했습니다) 문제를 해결할 수 없었습니다.이 오류를 검색했지만 Windows Server 2008에 대한 다른 수정을 시도했지만 Windows 7에서 이 문제가 발생한 사용자를 찾을 수 없습니다.

이 문제를 해결할 수 없으면 Windows 7(윈도우 7)을 사용할 수 없으며 기계를 다시 만들기 전에 기계를 지우고 다시 시작(세 번째)해야 한다는 것을 알고 싶습니다.

문제:
OS: 윈도우 7 엔터프라이즈
오류 메시지: ECHRESULT 의 : 0x800A03EC
드:

Private m_xls As Microsoft.Office.Interop.Excel.Application
Private m_wkbk As Microsoft.Office.Interop.Excel.Workbook
Private m_wksht As Microsoft.Office.Interop.Excel.Worksheet
m_xls = New Application
m_xls.Visible = False : m_xls.DisplayAlerts = False
m_wkbk = m_xls.Workbooks.Open(Me.FilePath)
m_wksht = CType(m_wkbk.ActiveSheet, Worksheet)
'...Write some data...'
m_wkbk.SaveAs(Me.FilePath, XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, False, False, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)

마지막 줄에서 오류가 발생합니다.

지금까지 시도한 것:

  1. 네트워크 서비스 계정을 사용하도록 AppPool을 변경합니다(보안 설정의 사용자 목록에서 찾을 수 없는 'ApplicationPoolIdentity'였습니다).그런 다음 네트워크 서비스 계정에 해당 폴더에 대한 전체 액세스 권한을 부여합니다.
  2. DCMCNFG의 모든 'Microsoft Excel Application' 설정에 대한 Network Service 액세스 권한 부여
  3. 찾을 수 있는 유일한 다른 항목이므로 "appcmd set config - section:asp -enableParentPaths:true" 명령을 실행합니다.
  4. 를 이용해서.작동했지만 다른 오류를 발생시킨 CopyAs() 저장

Windows 7(윈도우 7)이 새로 나온 이후에 다른 사람이 이런 일을 당했는지 확인하고 싶었을 뿐입니다.저는 서버 2008을 사용할 수는 있지만, 관리자에게 서버 2008이 작동하지 않을 것이라고 말하기 전에 확실한 이유를 알고 싶습니다.

고마워요, 제프

참고: 내부 위키에서 수정한 내용을 모두 정리한 것이기 때문에 이 내용을 조금 요약해야 합니다. 하지만 어떤 부분을 변경하여 작동했는지 확실하지 않으므로 모두 포함하겠습니다.

해결책:

다음 변경 사항은 이 문제를 해결하는 방법의 상위 집합일 수 있습니다.

-DCOMCNFG.exe 'Component Services > Computers > My Computer' 로 이동합니다 를 실행하고
-'내 컴퓨터'를 마우스 오른쪽 단추로 클릭하고 '속성'을 클릭합니다.
-. -'COM Security'다를 엽니다.나열된 모든 버튼('Access Permission(액세스 권한)' & 'Launch and Activate Permissions(권한 시작 및 활성화)' 아래에 있는 '제한 편집...' 및 '기본값 편집...' 버튼)에 대한 계정을 추가합니다.계정에 모든 액세스 옵션을 제공합니다.적용)'를한 다음 '(확인를 클릭합니다.Apply'를 클릭한 다음 'OK'를 클릭합니다.
-DCOMCNFG에 있는 동안 '내 컴퓨터' 링크를 확장하고 'DCOM Config' 폴더를 엽니다.
-에서 오른쪽 버튼을 후 '를 선택합니다 -'Microsoft Excel Application'에서 'Properties'합니다를하고합니다.
-'Security' 탭에서 'Launch and Activation Permissions' 및 'Configuration Permissions' 에 대한 'Customize' 옵션을 선택합니다를 에 대한합니다.둘 다 '편집...' 버튼을 클릭합니다.계정에서 모든 것에 액세스할 수 있습니다.
- 동안 합니다.-Microsoft Excel Application'의 'Properties'에서 'Identity'합니다를의합니다.
- - 자'합니다입니다.
-'OK'를 클릭합니다Apply'를음합니다.
-컴퓨터를 다시 시작합니다.

- 아래 DCOMCNFG & ApplicationPoolIdentity 변경을 시도해 보십시오.

- 로 명령 프롬프트를 합니다. - Administrator합니다) .
c:로 이동합니다.\Windows\로 이동합니다. - System32\inetsrv> 를하고 'appcmd set config - section:asp -enableParentPaths:true' 를합니다 합니다.

다른 방법으로 사용할 수 있습니다.SaveCopyAs()는 여전히 문제를 해결하지 못할 수 있으며 코드 변경이 필요합니다.

윈도우 7용 DCOMCNFG:

이 오류는 'Excel app = New Application()' 호출에서 발생합니다.

이 링크에는 XP/Server 2003의 문제를 해결하는 방법이 자세히 나와 있지만 Windows 7(http://blog.crowe.co.nz/archive/2006/03/02/589.aspx 에 적용할 수 있습니다.

'ASPNET' 계정이 없습니다.애플리케이션 풀을 확인해야 앱이 무엇으로 실행되는지 알 수 있습니다.
이렇게 및 프로그램 리>램'해합니다.'> '
해당 AppPool을 마우스 오른쪽 버튼으로 클릭하고 'Advanced Settings'(고급 설정)를 선택합니다. 에서Identity'에서 실행 아이덴티티'는 현재 운영 중인 계정을 찾을 수 있습니다.'Application Pool Identity' 를 윈도우 서버 2003 처럼 'Network Service' 로 바꿨습니다를 저도 찾을 수 없었던합니다.
설정되면 DCOMCNFG.exe를 실행합니다.'Component Services>Computers>My Computer>로 이동합니다.DCOM Config'.
오른쪽 버튼을 누른 후'를 Microsoft Excel Application'에 'Properties' 를 선택합니다 을 찾아 마우스 오른쪽 버튼을 누른 후.)' 탭을 선택합니다보안' 탭을 선택합니다.시작 및 활성화 권한'에서 '사용자 지정'을 선택하고 '편집'을 클릭합니다.
그런 다음 'Add...' 버튼을 클릭합니다.
적절한 계정의 이름(이 경우 '네트워크 서비스')을 입력하고 '이름 확인'을 클릭합니다.그런 다음 '확인'을 클릭합니다.
'및Launch and Activation Permissions' 페이지에서 'Network Service' 계정을 강조 표시하고 'Local Launch' 및 'Local Activation' 확인란을 선택합니다.그런 다음 '확인'을 클릭합니다.

제가 이 오류가 발생했을 때 사용을 시작한 것 같습니다.SaveAs 대신 SaveCopyAs.이것이 또 어떤 오류를 야기하고 있는지 잘 모르겠습니다. 자세히 설명해 주신다면 아마도 그 상황에 대해 뭔가 알아낼 수 있을 것입니다.

또한 한 가지 작업은 파일을 처리한 후 excel.exe가 메모리에 남게 하는 것입니다.COM interop 객체(http://support.microsoft.com/kb/317109) 를 사용하고 릴리스하는 올바른 방법을 보여주는 기사입니다.고통스럽지만 앱이 닫히기 전에 이러한 리소스를 공개할 수 있도록 하는 것이 효과적이었습니다.

프로그램(및 EXCEL)을 실행하고 있는지 확인합니다.EXE)를 관리자로 사용하고 저장하려는 디렉토리에 "읽기 전용" 속성이 없습니다.

또한 파일 이름만 전달하는 대신 전체 파일 경로를 전달해 보십시오.

시스템 통과를 시도해 볼 수도 있습니다.반사.실종된.선택적 매개변수를 생략하는 대신 값.

지금은 다른 생각이 안 나요.도움이 되길 바랍니다.

ShdNx

제프 케슬린키의 위 답변은 결국 저를 위해 일을 하게 되었습니다.또한 앱에서 사용 중인 응용 프로그램 풀을 살펴보고 ID가 정확하고 완전한 액세스 권한과 권한을 가지고 있는지 확인해야 합니다.

같은 문제가 발생했는데 윈도우 이벤트에서 예외 코드 0xc0000005로 어플리케이션 크래시 오류가 발생했습니다.웹을 검색하고 링크Excel 2010 Crash, Exception code: 0xc0000005 열린 파일의 파일 확장자 이름을 xlsx에서 zip으로 바꿉니다.해결책은 제 경우에 적합합니다.

ISS를 켜보세요. 자세한 내용은 여기 window 7에 대해 언급되어 있습니다.

http://helpdeskgeek.com/windows-7/turn-on-microsoft-internet-information-services-in-windows-7/

언급URL : https://stackoverflow.com/questions/1981395/windows-7-net-excel-saveas-error-exception-from-hresult-0x800a03ec

반응형