別のドメインにローカルサーバーからファイルをコピーしますFile.Copy

  最近、需要が、上記のコードは、複数のサーバーに展開する必要がありますが、サーバーは、ファイル、サービスのニーズをアップロードするサービスの一番上に展開されるように、直接、唯一のオープンポート80を介してローカルサーバ、WebサイトへのアクセスをアクセスすることはできませんSystem.IO.File.Copyを使用して直接法は、現在のコンテキストは、資格情報を使用して、アプリケーションプールの資格情報であるため、ユーザー名やパスワードは、失敗した要求されます場合は、上記の他のサーバへのアップロード後にファイルをコピーします。

この問題を回避するには、アナログログイン次いでSystem.IO.File.Copyメソッドを使用し、次のことにあるコア・コードです。

使用してシステムを。
使用にSystem.Collectionsを。
使用してSystem.Collections.Genericを。
使用してSystem.Dataを。
使用したSystem.Diagnosticsを。
使用してSystem.Runtime.InteropServicesを。
使用してSystem.Security.Principalを。
使用してSystem.Security.Permissionsを。

パブリック クラスのForm1 
{ 
    [DLLIMPORT(" ADVAPI32.DLL "、SetLastError = )]
     パブリック 静的 にexternの INTのLogonUser(文字列 lpszUsername、ストリング lpszDomain、ストリングlpszPassword、int型 dwLogonType、int型 dwLogonProvider、REF のIntPtr phToken)。
    プライベート のボイドのButton1 Click(System.Objectの送信者、System.EventArgs e)は
    { 
        のIntPtr admin_token = デフォルト(のIntPtr)。
        WindowsIdentity wid_current = WindowsIdentity.GetCurrent()。
        WindowsIdentity wid_admin = nullを
        WIC WindowsImpersonationContext = nullをしてみてください{ 
            MessageBox.Show(" コピーファイルを... " );
            もし(のLogonUser("リモート管理者名"" リモートドメイン名"" リモートユーザーパスワード"90REF!admin_token)= 0 ){ 
                wid_admin = 新しいWindowsIdentity(admin_token)。
                WIC = wid_admin.Impersonate()。
                System.IO.File.Copy(" C:\\ right.bmp "" \\\\ xxx.xxx.xxx.xxx \\ testnew \\ right.bmp ")。
                MessageBox.Show(" コピーが成功しました" ); 
            } { 
                MessageBox.Show(" コピー失敗" )。
            } 
        } キャッチ(のSystem.Exception SE){
             int型 RET = Marshal.GetLastWin32Error()。
            MessageBox.Show(ret.ToString()、" エラーコード:" + ret.ToString()); 
            MessageBox.Show(se.Message)。
        } 最後に{
             場合(WIC!= NULL ){
                wic.Undo(); 
            } 
        } 
    } 
}

以下からの参照上記https://stackoverflow.com/questions/13132926/how-to-copy-folder-from-one-server-to-another-with-different-domain-using-c-shar

おすすめ

転載: www.cnblogs.com/tcli/p/11236343.html