문제

우리는 앱의 일부를 Windows 서비스로 실행하고 있으며 ODBC를 통해 가져 오려면 DSN에 액세스 할 수 있어야합니다. 그러나 어떤 DSN에 액세스 할 수 있는지에 대한 시행 착오를 통해 많은 제한이 발견되는 것 같습니다. 예를 들어 1. 서비스를 실행하는 계정에 관리자 권한이없는 한 시스템 DSN에 액세스 할 수없는 것 같습니다. (연결하려고 할 때 액세스 거부 오류가 발생합니다) 2. 다른 사용자가 만든 사용자 DSN에 액세스하십시오 (이 제품은 이해할 수 있습니다). 3. 네트워크를 통해 파일 DSN에 액세스하십시오

파일 DSN의 목적은 다른 컴퓨터가 연결하여 연결할 수 있도록하는 것이지만 그 일을 할 수는 없습니다.

Windows 서비스를 사용할 때 DSN 액세스에 대한 모든 규칙과 제한 사항이 무엇인지 알고 있거나 어디에서 알 수 있습니까? 감사해요

도움이 되었습니까?

해결책

이것은 #1과 #2 사이에 있습니다. 때로는 올바른 파일 권한도 필요합니다. 어떤 이유로 든 DB2 DSN에 연결하는 Vista 머신에 문제가있었습니다. , 운전자는 IBM이 관리자가 수행하고 C 드라이브의 루트에있는 클라이언트 바이너리와 LIB를 설치 한 디렉토리에 대한 쓰기 액세스가 필요했습니다.

다른 팁

나는 당신이 이미 세 가지 주요 규칙을 직접 발견했다고 생각합니다. :-)

서비스 계정에 관리자 권한이 필요하지 않다는 점을 제외하고. Ianana (저는 네트워크 관리자가 아닙니다)이지만 귀하의 서비스 계정은 아마도 ODBC 파일 또는 디렉토리 중 하나에 대한 액세스를 읽기 만하면됩니다.

서비스와 함께 매핑 된 드라이브에 연결할 수 없습니다. 매핑 된 드라이브는 데스크탑의 아이콘을 추적하는 데스크탑 힙이라고하는 메모리와 상호 작용해야합니다. 서비스는 해당 메모리에 액세스 할 수 없습니다. DSN을 사용해야하는 경우 SystemDsn을 작성하십시오. 연결 문자열을 사용하고 app.config에 저장하고 암호화 API를 사용하여 사용자 이름과 암호를 암호화하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top