좀 황당한 경우인데, 프로그램 폴더안에 있는 db파일을 변경을 했는데, 그 파일을 불러오니 원본 파일이 나오더군요…-_-;;
관리자 권한으로 변경을 해도 마찬가지이고, 심지어는 삭제를 해서 분명히 해당 파일이 없는데도, 계속 해당 파일을 불러오는데, 미치고 환장하는 줄 알았습니다.
database파일인데, 문서나 사진도 마찬가지라고 하더군요.
바이러스가 걸렸나? 컴퓨터를 다시 설치해야 하나 싶었는데, Windows Vista부터 Windows 7, Windows8에 적용되는 윈도우 파일, 레지스트리 가상화라는 시스템 때문에 발생을 한 문제입니다.
개인적으로는 윈도우 7을 사용했을때는 이런 문제가 없었는데, 윈도우8로 업그레이드를 한후에 이런 일이 생긴듯 합니다.
직접 찍어본 동영상인데, 참고해 보시길 바라겠습니다.
윈도우 파일 가상화(VirtualStore in Windows)란?
보안문제로 C:\Windows, C:\Program Files, C:\Program Data 등의 파일을 임의적으로 수정, 삭제하지 못하게 하지 위한 방법이라고 합니다.
관리자 권한이 아닌, 일반적으로 program files에 설치된 프로그램이 해당 폴더에 있는 데이터를 수정, 삭제를 하는 경우, 보통 데이터베이스나 ini, txt 등 수정, 변경, 생성, 삭제가 되는 파일 등이 별도의 폴더에 저장이 됩니다
윈도우 파일 가상화 파일이 저장되는 공간
C:\Users\사용자명\AppData\Local\VirtualStore
위 공간에 해당 프로그램의 경로와 똑같이 만들어져서 파일이 생성이 됩니다.
모든 파일이 그대로 생기는것이 아니라, 프로그램이 read, write, delete, create 등을 하는 파일들만 보관이 되더군요.
물론 삭제를 해도, 다시 프로그램을 일반 권한으로 실행을 하면 다시 생성이 되는데, 삭제하시기 전에 원본 파일이 중요하다면 복사를 해두셔 합니다.
윈도우 파일 가상화 기능 사용하지 않는 방법
인터넷을 뒤져봐도 이런 기능이 있다는 이야기는 좀 있는데, 서비스나 설정, 레지스트리 등을 설정해서 그냥 해결되지는 않는듯 하더군요.
hkey_current_user\softwaer\classes\virtualStore\machine\software 에 가시면 관련된 폴더들이 나온다는데, 제 프로그램은 여기에 목록이 없는데도 가상화가 진행이 되네요.
물론 저같은 경우 제어판->사용자 계정->사용자 계정 컨트롤 설정 변경을 꺼놓은 상황입니다.