2014-07-16 4 views

답변

6

실행중인 사용자가 (프로필 로딩을 사용하는) 로그온 사용자이고 자격 증명을 입력하여 원격 경로에 이미 액세스 한 경우 사용자 프로필이로드 된 상태로 실행될 수있는 응용 프로그램은 아무 것도 실행하지 않고 UNC 경로에 액세스해야합니다 로그인.

그렇지 않으면, 당신은이 piece of code to logon you can find in GitHub를 사용할 수 있습니다

using (UNCAccessWithCredentials unc = new UNCAccessWithCredentials()) 
{ 
    if (unc.NetUseWithCredentials("uncpath", user, domain, password)) 
    { 
     // Directory.GetFiles() here 
    } 
} 
+0

나는 (그것이 작동한다면보고 다음에 수동으로 로그인 한) 것을 시도했지만 운이에게 도움 생각합니다. VPN을 통해 액세스하는 다른 도메인에 문제가 있다고 생각합니다. – BVernon

+0

+1 답 B/C에 대해 이미 아이슬러 보리스의 의견에 답을 따라 갔지만 작동한다고 확신합니다. – BVernon

+0

내가 언급했듯이, 나는이 대답을 사용하지 않았지만 그것이 작동한다고 상상하고 나는 답변으로써 idlerboris의 코멘트를 표시 할 수 없다. – BVernon

0

그것은 가능하다. 보통 시스템에 자격 증명을 전달하는 프로세스가 생성됩니다. 정확히이 작업을 수행하는 코드는 아래를 참조하십시오. 프로세스가 완료되면 네트워크 공유를 사용할 수 있습니다.

public void MapPath() { 
    string strServer = “ServerName”; 
    string strShare = “ServerShare”; 
    string strUsername = “ServerUsername”; 
    string strPassword = “ServerPassword”; 
    Process pNetDelete = new Process(); 
    pNetDelete.StartInfo.CreateNoWindow = true; 
    pNetDelete.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    pNetDelete.StartInfo.UseShellExecute = false; 
    pNetDelete.StartInfo.FileName = “net”; 
    pNetDelete.StartInfo.Arguments = string.Format(“use /DELETE {0}\ 
    {1} /Y”, strServer, strShare); 
    pNetDelete.Start(); 
    pNetDelete.WaitForExit(); 
    Process pNetShare = new Process(); 
    pNetShare.StartInfo.CreateNoWindow = true; 
    pNetShare.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    pNetShare.StartInfo.UseShellExecute = false; 
    pNetShare.StartInfo.RedirectStandardError = true; 
    pNetShare.StartInfo.RedirectStandardOutput = true; 
    pNetShare.StartInfo.FileName = “net”; 
    pNetShare.StartInfo.Arguments = string.Format(“use \\{0}\{1} /u:"{2}" "{3}"”, 
      strServer, strShare, strUsername, strPassword); 
    pNetShare.Start(); 
    pNetShare.WaitForExit(); 
    string strError = pNetShare.StandardError.ReadToEnd(); 
    if (pNetShare.ExitCode != 0) 
    { 
     throw new Exception(strError); 
    } 
} 
관련 문제