从不在域中的计算机访问共享文件夹

Posted

技术标签:

【中文标题】从不在域中的计算机访问共享文件夹【英文标题】:Access a shared folder from a machine not in the domain 【发布时间】:2010-04-29 10:21:49 【问题描述】:

我正在用c#编写一个应用程序,它使用远程连接到其他机器,并在每台机器上植入一个可执行文件然后执行它。每台机器在本地创建一个专用的共享文件夹,然后异步尝试写入其他机器的共享文件夹。

问题是当一台机器尝试写入另一台机器的共享文件夹时(如果它们不在同一个域中),它会失败。如果我尝试从一台机器手动访问另一台机器的共享文件夹,系统会提示我输入凭据,即使我可以看到共享文件夹为所有人提供了完全权限。

有人知道如何解决这个问题吗?

谢谢!

【问题讨论】:

你的用户是什么?不要认为你可以成为本地系统或本地服务。 【参考方案1】:

您可以通过 P/Invoke 使用 LogonUser API 来实现这一点,但您需要一些机制来获取用户密码(用户的键盘是一个很好的方法;))

DllImport("advapi32.dll", SetLastError=true)]
   static extern bool LogonUser(
     string principal,
     string authority,
     string password,
     LogonTypes logonType,
     LogonProviders logonProvider,
     out IntPtr token);

void login()
    bool result = LogonUser(
     "Alice", "ACME", // "ACME\Alice"
     pwd,
     LogonTypes.Batch,
     LogonProviders.Default,
     out token);
    if (result)
      //off you go
    
 

【讨论】:

这就是问题所在,我无法获取用户凭据,这就是我使用共享文件夹的原因,所以我不需要它。谢谢。 您无法访问共享文件夹而不对其进行身份验证?安全隐患是巨大的!您唯一的其他选择是让您的网络管理员允许访客访问共享,但这有点疯狂..

以上是关于从不在域中的计算机访问共享文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JCIFS 将文件从 SMB 共享复制到不在域中的本地驱动器

DFS分布式独立共享和域共享如何设置访问权限

在两个域之间共享共享 html 内容时出错

win7共享文件夹,在mac下以不同网段的ip地址访问时被防火墙阻止的问题

AD组策略软件分发

AD组策略软件分发域