Linux Programmer

MS워드 파일 사용 권한, 엑셀 공유 위반 본문

컴퓨터 관련/윈도 패밀리

MS워드 파일 사용 권한, 엑셀 공유 위반

sunyzero 2011. 10. 27. 14:23


2011.11.9일자 MS office update로 이 문제는 부분적으로 패치되었다. 패치된 내용은 인덱싱보다 파일 저장을 먼저 하도록 하는 것 같다. 하지만 이 경우에도 큰 파일을 여러번 저장하게 되면 오류가 발생한다.

그래서 아래 본문처럼 해결 방법을 설정해두는 편이 좋다고 생각된다. 특히 큰 파일을 편집할 때면 더더욱 그렇다. 엑셀의 공유 위반의 경우도 같은 맥락으로 해결된다.


1. 원인 및 증상

MS워드 2010 저장 파일 사용 권한 오류MS워드 2010에서 저장시 파일 사용 권한 오류 메시지

얼마전부터 MS워드 2010에서 큰 용량의 문서 파일을 저장하려고 하면 "파일 사용 권한 오류이므로 Word에서 파일을 저장할 수 없습니다"라는 메시지가 나왔다. 이런 경우에는 꼭 파일을 날려먹거나 한참 뒤에 저장함으로서 문제를 해결했는데... 어제 몇시간 작업한 것을 날려먹고 화가나서 해결책을 찾기 시작했다.

일단 검색을 해보니 쓸만한 내용은 거의 없었다. 심지어 마이크로소프트 공식지원 사이트에서도 다른 third-party프로그램의 문제라고 하거나 임시파일, 프로그램을 지워봐라, 혹은 안전모드에서 작동시켜라 별별 시덥잖은 내용뿐이었다.(참조: http://support.microsoft.com/kb/813997) 


그래서 그냥 스스로 해결하기로 하고 MS워드 프로세스를 추적하고 프로파일링하다보니 실마리를 찾았다. 바로 윈도우즈 파일 색인 기능(SearchIndexer.exe)이 문제였던 것이다.

윈도우즈 비스타, 7, 8에는 파일이름 뿐 아니라 파일 내용까지 색인해주는 기능이 있다. 이를 이용하면 파일명 뿐 아니라 MS워드, 엑셀, PDF등의 내용으로도 검색을 할 수 있다. 이 기능은 MS워드, 엑셀, PPT 등에서 문서 파일을 저장할 때 저장과 동시에 색인을 만드는 인덱싱 작업을 실행하게 되어있다. 굳이 MS워드가 아니더라도 다른 텍스트 파일도 변경되면 즉시 감지하여 인덱싱 작업을 한다.

문제는 MS 오피스 계열은 별도의 스왑 파일을 만들어서 작업하는데 있다. 저장하는 시점에 스왑 파일과 원본 파일이 결합되는데 SearchIndexer.exe 프로세스가 파일 변경을 감지하여 원본 파일에 락(lock)을 걸어 버린다. 파일 크기가 작으면 파일이 완전히 결합된 뒤에 락이 걸리므로 문제가 발생하지 않는 경우가 많다. 하지만 파일이 크면 내용을 인덱싱하는데 꽤 오랜 시간이 걸리게 된다. 이러다보니 저장하려는 내용 중 일부가 락에 걸려서 실패하는 것이다. 

이 문제의 해법은 색인 기능에 대한 설정을 바꿔줌으로서 가능하다. 방법은 2단계가 있다. 1단계까지만 해도 오류의 빈도는 확실히 줄어들지만 확실하게 없애려면 2단계까지 해주는 편이 좋기는 하다.

1단계는 색인 옵션에서 파일의 기본 정보만 색인하고 내용 색인을 못하도록 하는 색인 방식의 변경이고, 2단계는 색인 옵션에서 색인할 위치, 즉 색인할 디렉토리를 제외하는 것이다. 1단계는 색인이 가능한 디렉토리에서 파일을 편집하더라도 오류 빈도를 줄여준다는 점에서 꼭 해둬야 한다.


* 1단계 방법.

1. 제어판에서 색인 기능을 찾아서 실행한다. 

윈도우7 제어판 색인 옵션윈도우7 제어판 색인 옵션




2. 색인 옵션에서 고급을 들어간다.

윈도우7 제어판 색인 옵션 (고급 옵션)윈도우7 제어판 색인 옵션 (고급 옵션)


색인 옵션에서 고급 옵션을 들어가면 파일 형식을 지정할 수 있는 부분이있다. 이 중에서 워드의 doc이나 docx, docxml 등등의 파일 확장자를 찾아보면 필터가 "속성 및 파일 내용 색인"으로 되어있다. 이 부분을 "속성만 색인"으로 바꿔주면 된다.

또한 엑셀의 xls, xlsx의 확장자도 찾아서 바꿔주면 엑셀의 공유 위반이 나타나지 않게 된다. 파워포인트, 액세스 등등의 확장자도 찾아서 모두 바꿔주면 금상첨화라고 할 수 있다. 결과적으로 MS오피스가 다루는 모든 파일은 전부 바꿔주자.

물론 내용 색인을 막더라도 SearchIndexer.exe가 아주 짧은 시간 동안은 파일 속성 정보 자체를 수집하기 위해 아주 잠깐 동안 락(lock)을 걸고 작업하게 된다. 따라서 사용권한 오류로 저장할 수 없다는 메시지가 발생할 수도 있다. 하지만 빈도수는 엄청나게 줄어들게 된다. 


3. 속성만 색인하도록 바꾼 모습

윈도우7 제어판 색인 옵션을 속성 색인으로 변경윈도우7 제어판 색인 옵션을 속성 색인으로 변경


앞의 그림과 비교해보면 파일 속성만 색인하는 필터로 교체한 것을 볼 수 있다. 이렇게 하고나서 확인을 누르면 색인 기능이 새롭게 색인을 구성하면서 다음부터는 문제가 생기지 않게 된다.

MS워드 2010 저장 옵션MS워드 2010 저장 옵션


이 외에 MS워드의 옵션에서도 "다른 작업하면서 저장하기"를 해제해야 한다. 이렇게 저장하면서 다른 작업을 못하도록 해야 최대한 문제를 막을 수 있다.

일단 이렇게 해두면 권한 오류가 발생하는 빈도수가 엄청나게 줄어든다. 물론 아주 가끔은 발생할 수도 있으나 몇 초 뒤에 다시 시도하면 아무런 문제없이 저장된다.


* 2단계 방법.

2단계 방법은 아예 색인 옵션에서 MS워드 작업을 하는 디렉터리를 제외시키는 방법이다.

1. 위의 첫번째 그림(색인 옵션)에서 '수정(M)' 버튼을 눌러 '색인한 위치' 창을 띄운다.

제어판 / 색인 옵션 / 색인한 위치제어판 / 색인 옵션 / 색인한 위치


본인은 E드라이브와 F드라이브에 문서를 저장하는 편이다. 그래서 E, F 드라이브 전체를 색인 위치에서 빼놓은 것이 좌측 그림이다. 하지만 드라이브에서 특정 디렉터리만 문서를 저장한다면 우측 그림처럼 몇몇개의 디렉터리만 제외시킬 수도 있다. 둘 중 어떤 방식을 사용할지는 여러분의 환경에 따라 다르다.


2. 검색할 때 색인 포함 메시지를 조심해야 한다.

위에서 색인할 위치를 제외했음에도 검색을 시작하면 윈도우즈 탐색기는 "이 위치가 색인되어 있지 않아서 검색 속도가 느릴 수 있습니다. 색인에 추가하려면 여기를 클릭하십시오"라는 메시지를 보여준다. 여기서 무심코 클릭을 하여 색인 위치를 추가해주면 위에서 했던 작업이 말짱 도루묵이 되므로 절대로 클릭하면 안된다.

색인 추가 메시지색인 추가 메시지

여기까지 작업해두면 이제는 MS워드의 파일 사용권한 오류, 엑셀의 공유 위반 오류를 더 이상 보지 않게 될 것이다.


PS. 이번 문제는 마이크로소프트의 MS워드와 윈도우즈 시스템 서비스(색인 서비스)의 설계상의 문제이다. 파일 저장이 되는 순간부터 색인을 시작하니 파일의 저장이 완료되는 시점과 색인이 시작되는 시점에서 동기화(synchronization) 문제가 발생한 것이다. 더군다나 사용자가 저장 버튼을 2~3번 연속으로 누르면 동기화가 더 심각해지는 것이다.

차후 버전에서는 저장 버튼이 연속으로 눌리는 경우를 방지하기 위해 저장 버튼이 눌리는 순간, 저장 버튼을 비활성화(disabled) 시킨다든지 아니면 색인 서비스가 실시간 색인을 하는 것을 딜레이를 준다든지 해야 할 것이다. 뭐 나중에 MS개발진이 알아서 고치겠지.


PS2. 참고로 제가 직접 쓴 글은 필요하시다면 퍼가시거나 링크를 걸거나 별 상관없습니다. 메일로 허락을 구하지 않으셔도 되요.



61 Comments
댓글쓰기 폼