如何在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上运行时,收到的错误是:"系统无法找到指定的文件。"
有没有人对我如何连接到这个驱动器有任何想法,我是游戏的任何东西在这个阶段,让它工作…
我试过了:
- 共享对每个人都有权限,无需凭据即可访问
- 网络共享计算机防火墙关闭。
- manifest具有私有网络、企业认证和Internet(两者)设置(假设ok在本地工作)。
-
await StorageFolder.GetFolderFromPathAsync(@"''share'folder");
("系统无法找到指定的文件") - 使用powershell与
net use "''share'folder" "password" /USER:"user"
works和unc可以浏览 - 尝试使用
WNetAddConnection2
作为防止WNetAddConnection2类,允许被禁止的用户访问共享文件夹 - 尝试使用
WNetUseConnection
与用户提示和没有(都不工作) - 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();
}