2016-10-26 13 views
1

클라이언트 서버에서 실행되는 Windows 서비스가 있습니다. 이 서비스는 서로 다른 공유 폴더 (Y : \ 및 Z : \)에있는 두 개의 폴더에 액세스해야하며 둘 다 별도의 컴퓨터에 있습니다 (총 3 대의 컴퓨터).Windows 서비스에서 공유 네트워크 폴더에 액세스하려면 어떻게합니까?

현재 서비스는 동일한 컴퓨터에있는 파일 만 볼 수 있습니다. 공유 폴더에서 IO.Directory.Exists()를 수행하면 false를 반환합니다.

  1. 는 \\ 192.168.1와 로컬 서비스
  2. 테스트 존재로 실행 로컬 시스템
  3. 로 실행 네트워크 서비스
  4. 로 실행 : 여기

    내가 시도 것들입니다. xx \ path \ to \
  5. Y : \ 및 Z : \
  6. 같은 사용자 이름 및 암호를 사용하여 다른 컴퓨터에서 사용자 만들기 폴더를 확인 d는

아무것도 아직 일한 모든 사람에 대한 모든 권한을주고, 도움이 많이 감사합니다.

+0

컴퓨터가 도메인에 있지 않는 한 최선의 방법은 아마도 서비스가 명시 적으로 WNetAddConnection2 또는 유사하게 사용자 이름과 암호를 사용하여 연결하는 것일 것입니다. –

+0

그 일을 시도하고이 오류가 발생했습니다 : ERROR_NO_SUCH_LOGON_SESSION : 지정한 로그온 세션이 없습니다. 이미 해지되었을 수 있습니다. (코드 : 1312) – wsnyder

+0

사용자 이름이 완전하지 않은 경우 (Windows 10), 도메인 계정 인 경우 또는 서버가 도메인 사용자 인 경우 'SERVERNAME \ USERNAME' (또는 DOMAIN \ USERNAME)을 시도했습니다. 또한 도메인 컨트롤러). –

답변

0

Active Directory 환경에서 네트워크 서비스와 로컬 시스템은 모두 도메인의 다른 컴퓨터에 대한 네트워크 액세스 권한을 갖습니다. 서버는 도메인의 클라이언트 컴퓨터 계정, 즉 COMPUTERNAME$ 계정에 대한 액세스 권한을 부여하도록 서버를 구성하기 만하면됩니다. UNC 경로를 사용하면 연결이 자동으로 설정됩니다. 다른 로그온 세션에서 설정된 드라이브 문자를 사용할 수는 없지만 대부분의 경우 UNC 경로가 수행합니다.

독립 실행 형 환경에서 약간 까다 롭습니다. 유일하게 신뢰할 수있는 접근 방식은 명시 적으로 네트워크 연결을 설정하는 것이며, WNetAddConnection2 또는 다양한 대안을 사용하여 수행 할 수 있습니다. (또는 Win32 API를 호출 할 수 없으면 net use 명령으로 쉘 아웃 할 수 있습니다.) 어느 경우 든 연결이 설정되면 UNC 경로를 사용할 수 있습니다. 일반적으로 드라이브 문자를 매핑 할 필요는 없습니다.

에 어떤 이유로 인해에 드라이브 문자가 있어야하는 경우 일반적으로 WNetAddConnection2 대신 WNetUseConnection 함수를 사용하는 것이 가장 좋습니다. 자동으로 드라이브 문자를 선택하도록 구성 할 수 있으므로 이미 사용중인 문자를 파악할 필요가 없습니다.

상황에 따라 도메인 계정 인 경우 서버의 계정에 긴 형식의 사용자 이름 (예 : SERVERNAME\USERNAME 또는)을 사용해야 할 수도 있습니다. Windows 10 클라이언트는 어떤 이유로이 문제에 대해 특히 까다로운 것처럼 보입니다.