2010-04-29 64 views
0

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

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

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

谢谢!

+0

你是什么用户?不认为你可以是本地系统或本地服务。 – 2010-12-23 02:53:57

回答

0

您可以使用通过P /调用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 
    } 
} 
+0

这就是问题所在,我无法获取用户凭据,这就是为什么我使用共享文件夹,所以我不需要它。谢谢。 – Haviva 2010-04-29 12:28:49

+0

您无法访问共享文件夹而无需对其进行身份验证?安全影响是巨大的! 你唯一的选择是让你的网络管理员允许访客访问共享,但这有点疯狂.. – 2010-04-29 13:13:33

相关问题