如何从UWP应用程序中运行IoT Core的Raspberry Pi访问网络共享

我有一个ac#UWP应用程序,我打算在带有Windows 10 IoT核心的Raspberry PI上运行。 我遇到的问题是当我尝试连接到UNC共享来复制某些文件时。

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

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

有没有人对我如何连接到这个驱动器有任何想法,我在这个阶段的任何事情的游戏,让它工作…

我尝试过的:

  1. 共享拥有每个人的权限,无需凭据即可访问
  2. 网络共享计算机防火墙已关闭。
  3. manifest有私有网络,企业auth和Internet(两者)设置(假设在本地工作正常)。
  4. await StorageFolder.GetFolderFromPathAsync(@"\\share\folder"); (“该系统找不到指定的文件。”)
  5. 使用PowerShell与net use "\\share\folder" "password" /USER:"user"工作,unc可以浏览
  6. 尝试使用WNetAddConnection2如在Prevent WNetAddConnection2类中允许禁止用户访问共享文件夹
  7. 尝试使用WNetUseConnection同时提供用户提示和不使用(均WNetUseConnection
  8. FolderPicker或FileOpenPicker但这些似乎已被禁用IoT Core( https://ms-iot.github.io/content/en-US/win10/UnavailableApis.htm )。

提前致谢,

保罗。

你有没有尝试过冒充吗? 以下是我在其中一个项目中使用的内容:

 [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(); }