如何在UWP应用程序中从运行IoT Core的树莓派访问网络共享

本文关键字:访问 共享 网络 Core IoT UWP 应用程序 运行 | 更新日期: 2023-09-27 18:17:25

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

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

在本地运行应用程序时,我可以使用await StorageFolder.GetFolderFromPathAsync(@"''share'folder");连接到共享,这很好,我假设这是因为我使用的凭据保存在本地机器上。当在RPi上运行时,收到的错误是:"系统无法找到指定的文件。"

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

我试过了:

  1. 共享对每个人都有权限,无需凭据即可访问
  2. 网络共享计算机防火墙关闭。
  3. manifest具有私有网络、企业认证和Internet(两者)设置(假设ok在本地工作)。
  4. await StorageFolder.GetFolderFromPathAsync(@"''share'folder");("系统无法找到指定的文件")
  5. 使用powershell与net use "''share'folder" "password" /USER:"user" works和unc可以浏览
  6. 尝试使用WNetAddConnection2作为防止WNetAddConnection2类,允许被禁止的用户访问共享文件夹
  7. 尝试使用WNetUseConnection与用户提示和没有(都不工作)
  8. FolderPicker或FileOpenPicker,但这些似乎被禁用了IoT Core (https://ms-iot.github.io/content/en-US/win10/UnavailableApis.htm)。

提前感谢,

保罗。

如何在UWP应用程序中从运行IoT Core的树莓派访问网络共享

您试过模拟了吗?以下是我在我的一个项目中使用的:

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