2010-01-20 5 views
3

나는 것을 다시 쓰기 차례로 로컬 컴퓨터에모든 Windows 사용자가 편집 할 수있는 파일 위치 제안?

  • Windows 서비스 캐싱 데이터,
  • 사용자 프로세스 데이터를 읽고 자신의 데이터를 쓰기를 포함하는 제품,
  • 서비스를 짓고 있어요 데이터를 서버에 보냅니다.

어디서 모든 사용자가 공유하고 읽고 쓸 수 있도록 데이터 파일을 넣어야합니까? 이 소프트웨어는 데스크탑이 때때로 잠기는 기업 환경에서 작동하기 때문에 일부 사용자에게는 C : \ Program Files에 대한 쓰기 권한이 없습니다.

나는 C : \ Documents and Settings \ All Users \ Application Data \가 좋은 후보라고 생각하지 않는다. 나는 기본적으로 Administrator 만 생각한다. & 고급 사용자는 여기에 쓰기 권한이있다.

각 사용자의 Application Data 폴더를 사용할 수는 있지만 각기 다른 사람이 각 컴퓨터를 사용할 수 있기 때문에 약간의 고통이 될 것입니다. 따라서 공유 위치가 하나만 있으면 더 간단 할 것입니다.

저는 C# .net 2005에서 개발 중입니다.하지만 아마도 그다지 관련성이 없습니다.

답변

2

불행히도 당신은 진짜 선택의 여지가 없습니다. SHGetSpecialFolderLocation을 호출하여 c : \ users \ public \ AppData (위에서 링크 한 폴더의 이름이지만 Vista 및 Windows 7 일 수도 있음) 경로를 가져와야합니다. 그런 다음 자신의 앱을 만들어야합니다 폴더에 저장합니다. 그런 다음 보안 API를 사용하여 생성 된 폴더의 ACL을 수정해야합니다.

관리자가 아닌 여러 사용자가 동일한 파일을 읽고 쓸 수있는 기본 ACL이있는 폴더가 시스템에 없습니다.

c : \ users \ public \ AppData가 가장 근접합니다. 여기에서 응용 프로그램 폴더의 ACL을 수정하는 것이 가장 좋은 방법 인 것 같습니다. 물론, 일단 ACL 수정에 의지하면 폴더는 실제로 어디에서나 생성 될 수 있습니다. 그러나 이는 시스템 관리자를 놀라게 할 수 있으며 보안상의 위험을 초래할 수 있습니다.

+0

수정 된 ACL로 c : \ users \ public \ AppData 폴더에 모든 사용자가 읽기/쓰기가 가능하거나 시스템 관리자를 놀라게하거나 자동 정책과 충돌 할 수 있다고 생각하십니까? 사용자 AppData 폴더에 저장된 사용자 당 별도의 캐시를 사용하는 것이 가능할 수도 있지만 훨씬 더 많은 작업이 필요하다고 생각합니다.하지만 가능하다면이를 피하고 싶습니다. – Rory

+0

\ users \ public \ AppData는 모든 사용자가 파일을 읽을 수 있다는 합리적 기대가있는 (유일한) 폴더입니다. 따라서 이것이 모든 사용자가 쓰기 권한을 가지고있는 폴더를 추가하는 가장 합리적인 장소 (적어도 suprising : P)라고 생각했습니다. –

+0

사실'Environment.SpecialFolder.CommonApplicationData' 내에 하위 폴더를 만들고 모든 사용자가 읽기/쓰기가 가능하도록 ACL을 설정했습니다. 이 위치는 일반적으로 Win7/Win8에서는'C : \ ProgramData'가 아니고 (C : \ users \ public') XP는 C : \ Documents and Settings \ All Users \ Application Data입니다. – Rory