2009-07-01 3 views
3

우리는 XP에서 잘 작동하지만 Vista 및 Windows 7에 심각한 마이그레이션 문제가있는 응용 프로그램을 작성했습니다. 이는 아마도 사용자 데이터가 작성되는 곳 때문일 것입니다.도메인 호환성 : 공유 데이터를 어디에 써야합니까?

사용 사례는 다음과 같습니다. 개인 사용자는 기기에 로그인하여 데이터를 수집해야합니다. 수퍼바이저 사용자는 개별 사용자의 어깨 너머로보고 작업이 제대로 수행되고 있는지 확인해야합니다. 또한 이러한 수퍼바이저는 시스템 로그가 제대로 작동하는지 확인해야합니다.

XP에서 이러한 작업을 수행하는 방법은 C : \ 드라이브의 폴더에 직접 작성하는 것이 었습니다. 어쩌면 그건 나쁜 습관 일 수도 있지만 그렇지 않을 수도 있습니다. 기본적으로 시스템의 모든 사용자는이 데이터를 공유 데이터로 액세스 할 수 있어야했습니다. 일부 프로그램의 설치에서 IT 상황은 전혀 안전하지 않았으며 컴퓨터에 대한 단일 사용자가 있었고 각 사용자는 우리 프로그램에 별도로 로그인했습니다. 프로그램의 다른 설치에서 IT 직원은 유능하고 다른 사용자에 대한 로그인이 다르지만 각 사용자는 여전히 C :에 액세스 할 수 있으며 각 사용자는 필요에 따라 다른 사용자를 계속 확인할 수 있습니다.

Vista/Windows 7에서는 모두 변경됩니다. IT 직원이 모든 사용자를 개별 사용자로 제한하면 이러한 사용자는 여전히이 공통 데이터를 공유해야하며 응용 프로그램 별 구성 매개 변수 및 사용자 목록을 응용 프로그램의 디렉토리에 작성하는 것은 허용되지 않습니다. 시스템이 도메인이있는 위치에 있으면 사용자에게 로컬 관리자 권한이 없으므로 설치가 문제가 될 수 있습니다.

설치 프로그램이 모든 사용자가 쓸 수있는 디렉토리를 만들고이 디렉토리에 모든 사용자 별 데이터를 저장하도록하는 솔루션입니까? 그렇다면 설치 관리자에게 관리자 권한을 부여해야한다고해도 그렇게 할 수 있습니까? 아니면 Vista/7을보다 자유로운 XP 방식으로 작동시키는 방법이 있습니까?

답변

1

가장 확실한 리소스는 MSDN의 각 Windows 버전에 대한 응용 프로그램 사양의 "Data and Settings Management입니다. 이 문서를 읽고 Windows에 존재하는 다양한 특수 폴더의 근거와 데이터를 쓸 폴더를 선택하는 방법을 확인하십시오.

다음으로 응용 프로그램은 SHGetSpecialFolderLocation API를 사용하여 특수 위치에 대한 경로를 검색해야합니다.

가장 likley 당신의 필요를 제공하는 폴더 - CSIDL_APPDATA 것, 관리자가 읽고 하나의 사용자에 의해 기록되는 -, 윈도우 6.X에 기본적으로 C:\ProgramData\

에 해당하는 폴더에 대한 권한 생성 이 위치에서 관리자 및 소유자 (즉, 사용자를 만든 사용자)와 사용자 그룹의 구성원 만 읽을 수있는 권한을 모두 제어 할 수 있습니다.

완전히 다른 훈련은 디렉토리의 ACL (액세스 제어 목록)을 수정하는 데 필요한 코드를 작성하는 것입니다. 선택한 위치의 기본 권한이 귀하의 목적에 충분하지 않은 경우 필요한 것입니다.기본적으로

0

XP에서 이러한 작업을 수행하는 방법은 C : \ 드라이브의 폴더에 직접 작성하는 것이 었습니다. 어쩌면 나쁜 습관 일 수도 있습니다.

분명히 있습니다. 'C : \ Users \ Public \ Public Documents'는 적절한 곳입니다. NTFS ACL을 사용하여 파일을 읽고 쓸 수있는 사용자를 제어합니다.

+0

그래서, 우리가 설치중인 OS에 따라, 우리는 그 디렉토리 또는 다른 디렉토리에 대한 하나에 갈 ... 쉽게 많은 PC의에 대한 데이터를 읽을 수 있으며, 개별 PC의를 방문 할 필요가 없습니다 XP? 둘 다 공통된 것이 있습니까? – mmr

+0

나는 XP는 문서 및 설정에서 유사한 폴더를 가지고 있다고 생각 - 당신은 단지 하나 개의 코드 경로를 갖고 싶어, 나는에 따르면 %의 PUBLIC % 환경 변수가 공공 %가 비스타에 새로운 –

+0

퍼센트 작동합니다 생각 : HTTP : // vistaonwindows.com/environment_variables.html – mmr

0

는 모든 사용자가 쓰기 권한이없는 디렉토리가없는 (어쩌면 시스템 전체 TEMP 디렉토리를 제외하고,하지만 난 거기 로깅 정보를 작성하지 것이다). 설치 프로그램이 관리자 권한으로 실행되는 경우

, 그것은 같은 디렉토리를 만들고 모두 쓰기 권한을 부여 할 수 있습니다. 가장 논리적 인 장소는 ALLUSERSPROFILE (XP에서는 C:\Documents and Settings\All Users, Vista/7에서는 C:\Users\Public)입니다.

또 다른 아주 간단한 해결책은 모든 사용자가 단지 Application Data\Your App, 예를 들어, 자신의 프로필에 디렉토리에 기록하는 것입니다. 모든 로깅 정보는 관리 응용 프로그램에서 상당히 쉽게 집계 할 수 있으며 읽기 권한이 잠겨 있지 않은 경우 사용자는 필요한 경우 서로의 데이터를 읽을 수도 있습니다.

+0

에 떨어질 수, 응용 프로그램에서 하나의 사용자에 의해 생성 된 모든 정보는 응용 프로그램에서 다른 사람에 의해 볼 수있다; 그것은 짐승의 본질입니다. 물론 다른 솔루션 중 하나가 데이터베이스이지만 코드가 너무 많이 변경된 수준입니다. – mmr

1

앱의 일부가 시스템 서비스 및 자체 사용자로 실행될 수 있습니다. 그렇게하면 사용자가 멀리 떨어져 있어도 보안 저장소를 가질 수 있습니다. 또한 사용자가 정규 범위를 벗어난 권한을 가진 프로그램을 실행하게하는 가장 중요한 요구 사항을 제거 할 수 있습니다.

앱의 실제 사용자 공간 부분이 서비스에 연결되어 간단한 저장/검색 작업을 수행 할 수 있습니다.

+0

사실 그것은 매우 흥미로운 아이디어입니다. 그것은 아마도 파일 검색 속도를 크게 떨어 뜨릴 것입니다. CommonApplicationData가 갈 장소 인 것처럼 보입니다. – mmr

0

네트워크의 어딘가에 데이터를 저장하는 것이 더 좋지 않습니까? 이렇게하면 보안 설정을 한 번만 수행하면 유지 관리가 더 쉬워집니다. 감독자는

+0

아니요. 대부분의 고객이 네트워크가 없거나 제대로 조종되지 않은 곳과 Windows가 공유하는 책을 알지 못하는 '조카 네트워크'가 있기 때문에 책을 던지면 안됩니다. 우리는 네트워크 유지자가 될 수있는 능력이 없습니다. 그러나, 당신이 말하는 것에 진실이 있고, 이것을하는 제품이 있습니다. 내가 개발중인 제품은 그 중 하나가 아닙니다. – mmr

관련 문제