2010-04-01 2 views
0

내 응용 프로그램은 LocalSystem 계정으로 실행되는 Windows 서비스와 현재 로그인 한 일반 사용자로 실행되는 클라이언트 프로세스의 두 부분으로 구성됩니다.UAC를 사용하는 LocalSystem과 일반 사용자간에 공유 리소스를 어디에 저장해야합니까?

XP에서 Win7까지 Windows 버전에서 응용 프로그램을 배포해야합니다.

클라이언트는 웹에서 파일을 검색하고 사용자로부터 사용자 데이터를 수집합니다.

서비스는 클라이언트가 읽을 필요가있는 파일과 데이터를 구성합니다.

나는 이것을 저장하기에 가장 좋은 장소 (레지스트리 또는 파일 시스템 또는 혼합)를 알아 내려고하고있다. 클라이언트 또는 서비스가 그물에서 검색 할 수 있어야하는 파일 하나는 업그레이드가 가능할 때마다 실행해야하는 update_patch 실행 파일입니다.

초기 설치 프로그램 SETUP.EXE와 update_patch가이 이상적인 위치를 알아 내고 나중에 클라이언트와 서버가 읽을 수 있도록 RegKey를 설정해야합니다 (SETUP.EXE는 에

C:\Windows\system32\config\systemprofile\AppData\Roaming 

클라이언트의 %의 APPDATA %의 포인트 : 그것은 내 Win7에 테스트 시스템에서)

을 서비스를 설치하려면 서비스퍼센트 APPDATA %의 포인트를 필요로하기 때문에 높은 권한으로 실행 :

C:\Users\(username)\AppData\Roaming 

흥미롭게 구글 크롬은 모든

C:\Users\(username)\AppData\Local\Google\Chrome 

크롬 (응용 프로그램 및 데이터) 내 스위트 (백그라운드에서 자동으로 업데이트 할 수) 실행하려는 정확히 방법으로 거의 실행 저장

내가 피하려고하는 것은 사용자가 시스템을 수정하려고한다는 경고 메시지와 사용자가 XP/2000/2003 또는 UAC를 실행 중이므로 VirtualStore가 존재하지 않을 때 문제가 발생하지 않도록 경고하는 불쾌한 팝업입니다. 껐다.

내 대상 독자는 기술에 익숙하지 않은 일반 Windows 사용자입니다.

답변

0

Chrome에는 LocalSystem 계정으로 실행되는 서비스가 없습니다.

같은 시스템의 계정간에 파일을 공유하려면 % ALLUSERSPROFILE % 폴더에 파일을 저장하십시오.

프로그램을 자동 업데이트 할 수있게하려면 Chrome의 기능을 수행하는 것이 좋습니다. UAC가 켜져있을 때 업데이트 된 권한 상승을 시작하십시오.

+0

내 w2k3 테스트 컴퓨터에서 "C : \ Documents and Settings \ All Users"가 표시되고 w7에서 서비스 및 클라이언트 모두에 대해 "C : \ ProgramData"가 표시됩니다. 나는 내 SETUP.EXE가 \ 트리를 만들어야한다고 생각하니? 그리고 모든 사람에게 쓰기가 가능할 것입니까? – rwired

+0

네, 맞습니다. LocalSystem에 의해 생성 된 파일은 일반 사용자 (쓰기 가능하지 않음) 만 * 읽을 수 * 수 있기 때문에 권한에주의해야합니다. 하지만 파일을 만들 때 상관 없습니다. 이것은 CreateFile의'lpSecurityAttributes' 매개 변수를위한 것입니다. 올바르게 설정하면 원하는 사람이 파일을 쓰기 가능하게 만들 수 있습니다. –

+0

다음은 지금 찾는 문제입니다. 두 테스트 컴퓨터 모두에서 % ALLUSERPROFILE % 폴더 아래에 "응용 프로그램 데이터"가 있습니다. 응용 프로그램은 물건을 저장하는 것처럼 보이지만 w7에서는 잠긴 폴더입니다 (관리자의 경우에도 마찬가지 임). 다른 앱과 일관성을 유지하기 위해 나무 위보다 높은 곳에 보관하지 않아야합니까? – rwired

관련 문제