2011-09-16 7 views
2

私のC#アプリケーションには問題があります。ファイルをサーバーに移動する必要がありますが、サーバーはユーザー名とパスワードで保護されています。道はこのようなものです:ファイルを別のコンピュータに移動

\\Server\Folder 

、コードはこれです:

... 
File.Move(args[0], "\\\\Server\\Folder"); 
... 

私はそこにファイルを移動できますか?私を助けてください。

答えて

3

使用の偽装は:

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

File.Move(args[0], "\\\\Server\\Folder"); 

context.Undo(); 
+0

しかし、Linuxサーバーの場合は、それは働くだろうか? – user35443

+0

上記がうまくいかない場合は、[こちら](http://www.codeproject.com/KB/IP/ConnectUNCPathCredentials.aspx)を試してください。 – CodeCaster

+0

Windowsファイル共有が有効になっているLinuxサーバー(Samba)の場合は、これが動作するはずです。そうでない場合は、FTPソリューションのようなものを試してみてください。 – crlanglois

0

あなたはP \は、コピーする前に共有に接続するには、Windows API関数WNetAddConnection2を呼び出すことができます。ここで

http://msdn.microsoft.com/en-us/library/aa385413(v=vs.85).aspx

はのPInvokeページです:http://pinvoke.net/default.aspx/mpr/WNetAddConnection2.html

[DLLIMPORT( "MPR.DLL"、エントリーポイント= "でWNetAddConnection2"、CallingConvention = CallingConvention.Winapi)] プライベート静的にexternのerrorCodeでWNetAddConnection2(NETRESOURCE lpNetResource、ref文字列lpPassword、ref 文字列lpUsername、System.UInt32 dwFlags);

関連する問題