2015-10-12 31 views
15

我有一个c#UWP应用程序,我打算在Windows 10 IoT核心的Raspberry PI上运行。我遇到的问题是当我尝试连接到UNC共享以复制某些文件时。如何访问UWP应用程序中运行IoT核心的Raspberry Pi的网络共享

网络只是一个具有本地用户凭据的家庭网络,共享位于同一网络上的另一台计算机上。

当在本地运行应用程序时,我可以使用await StorageFolder.GetFolderFromPathAsync(@"\\share\folder");连接到共享并且工作正常,我假设这是因为我使用的凭据保存在本地计算机上。当在RPi上运行时,收到的错误是:“系统找不到指定的文件。”

有没有人对我怎么会连接到该驱动器的任何想法,我是什么游戏,在这个阶段得到它的工作...

我已经试过:

  1. 共享对每个人都有权限,可以在没有凭据的情况下访问
  2. 网络共享计算机防火墙已关闭。
  3. 清单具有专用网络,企业认证和Internet(两者)设置(假设本地工作正常)。
  4. await StorageFolder.GetFolderFromPathAsync(@"\\share\folder");(以下简称“系统找不到指定的文件。”),所用net use "\\share\folder" "password" /USER:"user"作品和UNC PowerShell的
  5. 可以浏览使用WNetAddConnection2使用WNetUseConnection既用户提示并没有
  6. 试图在Prevent WNetAddConnection2 class which allows prohibited user to access shared folder
  7. 尝试(都不起作用)
  8. FolderPicker或FileOpenPicker,但这些似乎被禁用的物联网核心(https://ms-iot.github.io/content/en-US/win10/UnavailableApis.htm)。

由于提前,

保罗。

+0

您是否尝试过在UNC路径中使用远程计算机IP地址而不是计算机名称?您可能会遇到名称解析问题。 \\ ipaddress \ sharename而不是\\ computername \ sharename? – BStateham

+0

是的,在上面相关的地方尝试了IP地址,以及其他变体\ c $ \。 –

+0

您可以尝试先将共享映射为netwerkdrive(例如,通过dos命令'net use'),然后通过本地驱动器号访问它?我现在没有Pi closeby来测试这个。 –

回答

1

您是否尝试过模拟呢?以下是我在其中一个项目中使用的内容:

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

private void Impersonate(Enum domainName, string userName, string password) 
{ 
    IntPtr _tokenHandle = IntPtr.Zero; 
    int Logon32_Provider_Default = 0; 
    int Logon32_Logon_Interactive = 2; 

    bool userSuccess = LogonUser(userName, domainName.ToString(), password, Logon32_Logon_Interactive, Logon32_Provider_Default, ref _tokenHandle); 

    if (!userSuccess) 
    { 
     throw new Win32Exception(Marshal.GetLastWin32Error()); 
    } 

    WindowsImpersonationContext _impersonatedUser = new WindowsIdentity(_tokenHandle).Impersonate(); 
} 
相关问题