서비스를 실행하는 서버가 아닌 폴더에 UNC 경로를 사용하도록 서비스를 구성하는 것이 좋습니다.
매핑 된 드라이브는 사용자를위한 유용성 기능이며 사용자 프로필/환경에만 해당됩니다. 의미, 로그인 할 때 드라이브 X : \\ server1 \ share1에 매핑되지만 드라이브 X에 로그인하면 \\ server2 \ share2에 매핑 될 수 있습니다. 실제 매핑 프로세스는 "로그온 할 때 다시 연결"을 사용하여 프로필의 일부로 저장되거나 로그온 스크립트에 의해 처리됩니다.
서비스가 실행중인 계정을 확인하고 해당 사용자 환경에 매핑 된 드라이브가 있는지 확인해야합니다 (How to map a network drive to be used by a service).
편집 :.
이유 콘솔 응용 프로그램이 작동하고 서비스하는하지 않기 때문에 환경 사이의 차이가에서 실행중인 않는
이를 설명하기 위해,이 콘솔 응용 프로그램을, 그것을 컴파일 한 다음 스케줄 태스크로 실행하십시오. "path"변수를 사용자가 액세스 할 수있는 매핑 된 드라이브로 설정하십시오.
static void Main(string[] args) {
MappedDriveResolver mdr = new MappedDriveResolver();
string logfile;
string path = @"I:\";
string[] files;
// Write out "log" file to where this is running from
logfile = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
logfile = Path.Combine(logfile, "log.txt");
using (StreamWriter sw = new StreamWriter(logfile, true)) {
try {
sw.WriteLine("Checking path " + path);
if (mdr.isNetworkDrive(path)) {
sw.WriteLine("Network Drive: Yes");
} else {
sw.WriteLine("Network Drive: No");
}
} catch (Exception ex) {
sw.WriteLine("Exception: " + ex.Message);
}
try {
sw.WriteLine("Resolve path " + path);
string newpath = mdr.ResolveToUNC(path);
sw.WriteLine("Resolved path " + newpath);
} catch (Exception ex) {
sw.WriteLine("Exception: " + ex.Message);
}
try {
sw.WriteLine("Get file list from " + path);
files = Directory.GetFiles(path);
if (files == null || files.Length == 0) {
sw.WriteLine("No files found");
} else {
sw.WriteLine(string.Format("Found {0} files.", files.Length));
}
} catch (Exception ex) {
sw.WriteLine("Exception: " + ex.Message);
}
sw.Flush();
sw.Close();
}
}
참고 :이 윈도우 7 작업 스케줄러
시험 1 인 : 그냥 더블 클릭하여 응용 프로그램을 실행합니다.
결과 : 성공
테스트 2 : 성공
테스트 3 :
결과 구성 예정으로 사용자 계정으로 실행하는 작업 "사용자가 로그온 한 경우에만 실행"으로 실행하도록 구성 예약 된 작업하여 사용자가 로그온했는지 여부에 관계없이 실행 "
결과 : 예외
테스트 4 :"로컬 서비스 "계정으로 실행되도록 예약 작업을 구성합니다.
결과 : 예외
시험 1 & 2 일을 그들이 현재 그것의 일부 매핑 된 드라이브를 포함하여 사용자 환경에 로그인 사용하고 있기 때문에.
테스트 3 & 4 매핑 된 드라이브가 구성되어 있지 않은 자체 사용자 환경이 만들어 졌으므로 실패합니다. 차이점이 무엇인지 순간적으로 알려주지 만, "대화 형"및 "비대화 형"환경은 몇 가지 중요한 의미에서 다릅니다.
서비스가 실행되는 계정에 적절한 권한이 있는지 확실합니까? http://stackoverflow.com : [1] [1] [ "서비스를 사용할 수 있도록 네트워크 드라이브를"스레드에 대한 대답] 가 : – kpcrash
나는이 답변이 도움이 될 것입니다 생각/a/4763324/3860297 – sekerg