如何从UWP应用程序中运行物联网核心的Raspberry Pi访问网络共享

Pau*_*ton 18 c# unc raspberry-pi2 windows-10-iot-core uwp

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

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

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

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

我尝试过的:

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

提前致谢,

保罗.

Chr*_*ris 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();
}
Run Code Online (Sandbox Code Playgroud)