2012-04-02 47 views
4

不完全確定如何處理此問題。我已經研究了一下,但是我已經提出了一些問題。嘗試連接到工作的網絡驅動器,並複製出最新的文件夾(更新到一個項目)對於我來說,目錄開始爲\,但是當我添加到一個字符串變量它不會連接,並將不會顯示時,我試圖檢查它。有沒有一個過程呢?從網絡驅動器C連接/複製#

這就是我所擁有的。在某些方面它必須是錯誤的。

string updir = @"\\NetworkDrive\updates\xxxxx"; 

public void CopyAll(DirectoryInfo source, DirectoryInfo target) 
    { 

     try 
     { 
      //check if the target directory exists 
      if (Directory.Exists(target.FullName) == false) 
      { 
       Directory.CreateDirectory(target.FullName); 
      } 

      //copy all the files into the new directory 

      foreach (FileInfo fi in source.GetFiles()) 
      { 
       fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true); 
      } 


      //copy all the sub directories using recursion 

      foreach (DirectoryInfo diSourceDir in source.GetDirectories()) 
      { 
       DirectoryInfo nextTargetDir = target.CreateSubdirectory(diSourceDir.Name); 
       CopyAll(diSourceDir, nextTargetDir); 
      } 
      //success here 
      copyall = true;  
     } 

     catch (IOException ie) 
     { 
      //handle it here 
      copyall = false; 
     } 
    } 

我一直在使用它來複制。它運作良好。

DateTime lastHigh = new DateTime(1900, 1, 1); 
     string highDir; 
     foreach (string subdir in Directory.GetDirectories(updir)) 
     { 
      DirectoryInfo fi1 = new DirectoryInfo(subdir); 
      DateTime created = fi1.LastWriteTime; 

      if (created > lastHigh) 
      { 
       highDir = subdir; 
       lastHigh = created; 
      } 
     } 

並且找到最新的文件夾。

+1

你能顯示代碼,您使用的? – Msonic 2012-04-02 18:32:45

+0

我更新了我的desc與我用來試圖訪問驅動器。 – 2012-04-02 18:35:27

+0

這不能是*全部*您的代碼。請發佈整個複製方法。應該有一個'.Copy()'的地方。 – Msonic 2012-04-02 18:38:12

回答

4

你可以像這樣的東西(網絡共享指定訪問權限)嘗試:

string updir = @"\\NetworkDrive\updates\somefile"; 

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); 
WindowsIdentity identity = new WindowsIdentity(username, password); 
WindowsImpersonationContext context = identity.Impersonate(); 

File.Copy(updir, @"C:\somefile", true); 
+0

這最終成爲我需要的基礎。謝謝 – 2012-04-04 12:58:54

+2

我無法得到這個工作。首先第二個參數被定義爲「類型」而不是密碼。其次,這應該與WindowsIdentity.GetCurrent()一樣,它仍然會引發UnauthorizedAccessException。你是如何得到這個實際工作的? – Wouter 2015-02-10 09:28:48