윈도우 가상화 저장 공간(VirtualStore)-파일 변경,삭제,백업 문제 해결방법

좀 황당한 경우인데, 프로그램 폴더안에 있는 db파일을 변경을 했는데, 그 파일을 불러오니 원본 파일이 나오더군요…-_-;;

관리자 권한으로 변경을 해도 마찬가지이고, 심지어는 삭제를 해서 분명히 해당 파일이 없는데도, 계속 해당 파일을 불러오는데, 미치고 환장하는 줄 알았습니다.

 

윈도우 파일 가상화로 삭제, 변경해도 원본 문서,사진이 계속 불러오는 경우

database파일인데, 문서나 사진도 마찬가지라고 하더군요.

바이러스가 걸렸나? 컴퓨터를 다시 설치해야 하나 싶었는데, Windows Vista부터 Windows 7, Windows8에 적용되는 윈도우 파일, 레지스트리 가상화라는 시스템 때문에 발생을 한 문제입니다.

개인적으로는 윈도우 7을 사용했을때는 이런 문제가 없었는데, 윈도우8로 업그레이드를 한후에 이런 일이 생긴듯 합니다.

 

직접 찍어본 동영상인데, 참고해 보시길 바라겠습니다.

 

윈도우 파일 가상화(VirtualStore in Windows)란?

보안문제로 C:\Windows, C:\Program Files, C:\Program Data 등의 파일을 임의적으로 수정, 삭제하지 못하게 하지 위한 방법이라고 합니다.

관리자 권한이 아닌, 일반적으로 program files에 설치된 프로그램이 해당 폴더에 있는 데이터를 수정, 삭제를 하는 경우, 보통 데이터베이스나 ini, txt 등 수정, 변경, 생성, 삭제가 되는 파일 등이 별도의 폴더에 저장이 됩니다

 

윈도우 파일 가상화 파일이 저장되는 공간

윈도우 VirtualStore 가상저장소에 저장되는 폴더와 파일

C:\Users\사용자명\AppData\Local\VirtualStore

위 공간에 해당 프로그램의 경로와 똑같이 만들어져서 파일이 생성이 됩니다.

모든 파일이 그대로 생기는것이 아니라, 프로그램이 read, write, delete, create 등을 하는 파일들만 보관이 되더군요.

물론 삭제를 해도, 다시 프로그램을 일반 권한으로 실행을 하면 다시 생성이 되는데, 삭제하시기 전에 원본 파일이 중요하다면 복사를 해두셔 합니다.

 

윈도우 파일 가상화 기능 사용하지 않는 방법

인터넷을 뒤져봐도 이런 기능이 있다는 이야기는 좀 있는데, 서비스나 설정, 레지스트리 등을 설정해서 그냥 해결되지는 않는듯 하더군요.

레지스트리레 저장된 VirtualStore 폴더의 설정의 모습

hkey_current_user\softwaer\classes\virtualStore\machine\software 에 가시면 관련된 폴더들이 나온다는데, 제 프로그램은 여기에 목록이 없는데도 가상화가 진행이 되네요.

물론 저같은 경우 제어판->사용자 계정->사용자 계정 컨트롤 설정 변경을 꺼놓은 상황입니다.

윈도우 파일 가상 저장 공간 기능 사용하지 않는 방법

윈도우 프로그램을 관리자 권한으로 실행하는 방법

제가 찾은 해결방법은 해당 프로그램의 exe 파일을 관리자 권한으로 실행을 하는 방법입니다.

이 경우에는 VirtualStore를 사용하지 않고, 기존의 경로에 있는 파일들을 직접 접근해서 사용을 합니다.

 

응용프로그램을 항상 관리자 권한으로 실행하는 방법

항상 관리자 권한으로 윈도우 프로그램을 실행하는 방법

물론 매번 관리자 권한으로 실행을 하길 원하신다면 해당 프로그램의 마우스 오른쪽 버튼을 누르고, 속성에 들어가서 호환성 탭에서 모든 사용자에 대한 설정 변경을 눌러서 “관리자 권한으로 이 프로그램 실행”을 체크하고, 적용, 확인을 해주시면 이후에는 VirtualStore를 사용하지 않는듯 합니다.

관리자 권한으로 이 프로그램을 실행하는 경우 네트워트 드라이브에 접근이 되지 않고, 약간의 제약조건도 있더군요.

 

VirtualStore 폴더 삭제, 사용시 주의해야 할 사항

개발자가 테스트로 프로그램을 개발하거나 만들때도 이 부분은 신경을 쓰셔야 하는것이 sos 파일이 c:\program fiels\개발 프로그램 에서 직접 코드를 수정하시는 경우 코딩을 해 놓은 파일이나 컴파일 된 파일들이 가상화디렉토리도 이동을 하게 될 수도 있습니다.(저도 100% 보장은 못드립니다…-_-;;)

이런 경우 자신이 만든 폴더만 백업을 한다면 가상화가 작동된 이후의 파일들은 백업을 못받아 놓을수도 있습니다.

이걸 모르고, 프로그램 폴더 파일의 소스만을 백업을 받고, 컴퓨터를 포멧을 한다면 나중에 확인시에 아주 오래전 코드만 남아 있을수도 있습니다.

개발자라면 코딩시에 관리자 권한으로 개발프로그램을 실행하시는게 좋을듯 하며, 일반 사용자라면 windows, program files 등의 폴더에 중요한 자료를 넣어두지 않는게 좋을듯 합니다.

 

일반적으로 유저가 윈도우를 사용할때는 문제가 되지 않을수도 있지만, 백업 및 복구를 위해서라면 꼭 알아두셔야 하지 않을까 싶은데, 참고하시길 바라겠습니다.

 

Windows Vista의 일반 파일 및 레지스트리 가상화 문제

위 microsoft 홈페이지에 가시면 자세한 설명이 있으니 참고하시길 바라겠습니다.

시나리오 1: 응용 프로그램을 설치, 업그레이드 또는 사용할 때 오류 메시지가 나타난다

시나리오 2: 방금 만든 파일이나 폴더를 찾을 수 없다

시나리오 3: 응용 프로그램을 업그레이드한 다음 예기치 않은 프로그램 동작이 발생한다

시나리오 4: 응용 프로그램을 제거한 후 응용 프로그램의 파일이 여전히 컴퓨터에 있다

위의 조건에 해당 하는 경우 응용 프로그램에서 파일이나 폴더를 지정한 가상화된 폴더 외부에 만들어서, 해당 폴더쪽으로 연결을 한다고 합니다.

확장자가 .exe, .dll, .sys는 지원하지 않고, 나머지 파일들에게 적용이 된다고 합니다.

댓글 남기기