2011-11-21 150 views
0

感谢您的快速响应。但我只是登录而已。即时通讯使用下面的代码来尝试登录:将文件从远程服务器复制到本地,反之亦然

bool success = LogonUser("username", "000.000.000.000", "#####",2 ,0 , out userToken); 

但即时得到例外的使用用户名和PWD我使用通过MSTSC登录失败 IM。

我写代码将文件从远程机器复制到本地机器,反之亦然。 但我不是能够知道我可以指定凭据这样做.. 我的代码如下:

string sourceFile = System.IO.Path.Combine(globalInfo.GlobalServerPath, sourcePath)); 
string destFile = System.IO.Path.Combine(globalInfo.GlobalPath, destPath) 


string[] files = System.IO.Directory.GetFiles(sourceFile); 

foreach (string s in files) 
    { 
    string fileName = System.IO.Path.GetFileName(s); 
    fileName = System.IO.Path.Combine(destFile, fileName); 
System.IO.File.Copy(s, fileName, true); 
} 

在这里,我得到错误:无法登录..

线路

string [] files = System.IO.Directory.GetFiles(sourceFile);

即时连接到远程机器。

请帮

+0

您没有相应的登录权限。您需要指定包含凭据的UNC路径。 – Polynomial

回答

1

需要模拟:

[DllImport("advapi32.dll", SetLastError = true)] 
    public static extern bool LogonUser(
      string lpszUsername, 
      string lpszDomain, 
      string lpszPassword, 
      int dwLogonType, 
      int dwLogonProvider, 
      out IntPtr phToken); 

IntPtr userToken = IntPtr.Zero; 

bool success = External.LogonUser(
    "john.doe", 
    "domain.com", 
    "MyPassword", 
    (int) AdvApi32Utility.LogonType.LOGON32_LOGON_INTERACTIVE, //2 
    (int) AdvApi32Utility.LogonProvider.LOGON32_PROVIDER_DEFAULT, //0 
    out userToken); 

if (!success) 
{ 
    throw new SecurityException("Logon user failed"); 
} 

using (WindowsIdentity.Impersonate(userToken)) 
{ 
    // do the stuff with john.doe's credentials 
} 
+0

感谢您的快速回复。但我只是登录而已。 – Sangeeta

+0

你应该在代码中设置用户名和密码ive给你, –

+0

反对意见 分享[fb]分享[tw] \t 感谢您的快速回复。但我只是登录而已。 im使用以下代码尝试登录: bool success = LogonUser(“username”,“000.000.000.000”,“#####”,2,0,out userToken); 但即时通讯失败使用用户名和密码我通过mstsc登录失败。 – Sangeeta

0

我们有我们的项目类似的情况。我们在需要本地和远程服务器权限的域上创建了一个用户(这两个服务器都在同一个域中)。我们有一个Windows服务以及Web应用程序都被配置为在此用户上下文下运行。因此,在向远程服务器和从远程服务器处理文件时,我们不会收到权限问题。

但是,如果远程服务器不在同一个域中,则可以使用用户模拟(如果可能)或在远程计算机上配置ftp服务器。然后您可以使用ftp协议上传和下载文件。

+0

向下投票收藏 分享[fb]分享[tw] \t 感谢您的快速回复。但我只是登录而已。 im使用以下代码尝试登录: bool success = LogonUser(“username”,“000.000.000.000”,“#####”,2,0,out userToken); 但即时通讯失败使用用户名和密码我通过mstsc登录失败。 – Sangeeta

相关问题