如何在UWP中访问本地网络(SMB)?
我正在寻找相当长的一段时间了,但我只是找不到任何工作的解决方案,为这个特定的问题。我的目标是为主HoloLens应用程序创建一个后台应用程序(这意味着它必须在UWP中完成),它应该能够访问本地文件和本地网络(SMB),以便它能够映射文件层次结构,以便将它们以统一的方式中继到主应用程序,该应用程序将以3D/2D方式显示文件 到目前为止,我尝试了几种方法,包括:常规的StorageFolder/StorageFile交互(如果这一方法有效,那就太好了,因为已经实现了本地文件交互)、SharpCifs.Smb和Xb.Net.SmbTree 夏普CIFS:如何在UWP中访问本地网络(SMB)?,uwp,share,file-permissions,smb,Uwp,Share,File Permissions,Smb,我正在寻找相当长的一段时间了,但我只是找不到任何工作的解决方案,为这个特定的问题。我的目标是为主HoloLens应用程序创建一个后台应用程序(这意味着它必须在UWP中完成),它应该能够访问本地文件和本地网络(SMB),以便它能够映射文件层次结构,以便将它们以统一的方式中继到主应用程序,该应用程序将以3D/2D方式显示文件 到目前为止,我尝试了几种方法,包括:常规的StorageFolder/StorageFile交互(如果这一方法有效,那就太好了,因为已经实现了本地文件交互)、SharpCifs
public SmbFile GetFile ()
{
//smb://UserName:Password@ServerIP/ShareName/Folder/FileName.txt
SmbFile file = new SmbFile ("smb:\\winAccName:password@123.45.67.11\\TestShare");
file.Connect (); // Or any file action.
return file;
}
// Exception User-Unhandled -- SharpCifs.Util.Sharpen.UnknownHostException: '..MSBROWSE__.<01>'
后者成功地获取了文件夹,但未能对其执行任何操作。但这是我能做的最远的了。我还启用了以下功能:
<Capabilities>
<Capability Name="internetClientServer" />
<Capability Name="internetClient" />
<Capability Name="privateNetworkClientServer" />
<uap:Capability Name="sharedUserCertificates" />
<uap:Capability Name="enterpriseAuthentication" />
<DeviceCapability Name="proximity" />
</Capabilities>
我假设我遇到了权限问题,我想知道为什么SmbTree/SmbFile交互始终需要用户名和密码,而StorageFile/StorageFolder交互不需要用户名和密码(因此失败?)。我看到必须添加这些功能。。。但这并不是所需要的全部。文件选择器也只是解决本地文件权限问题的解决方案,但不能解决网络问题(客户端不能允许自己访问主机上的文件)。另外,对于全息镜头,我不能依赖文件选择器,因为它目前没有。无论如何,选择器似乎仍然可以工作,如果我可以创建一个自定义文件选择器,那也是一个可以接受的解决方案。。。如果可能的话
Ps:我还尝试以管理员的身份运行VisualStudio。并且还设置了共享文件夹权限(即使对于来宾)。当前共享文件夹是可通过“a:\”访问的本地文件夹。还设置了文件类型关联
我听到不少评论说UWP不支持SMB,但我听到一些评论说是谁让它起作用的(虽然这对我来说不起作用)。我还听说SMB 1不再被允许。我非常感谢您的帮助,因为这肯定不是我的专业领域
你好 为了回答我自己的问题,似乎我已经解决了这个问题,我想总结一下我所做的事情(我还发现这其中只有一部分是必要的,但可能只是暂时起作用……无论哪种方式,这些都可能会给你一个提示):
- 在Package.appxmanifest中添加以下功能:Internet、专用网络、邻近性、企业身份验证
- 同时,还要添加声明:给定文件的文件类型关联,并添加“共享目标”。这些东西可以设置在可视化显示中,不需要代码视图
- 使用正确的路径:。StorageFolder folder=Wait StorageFolder.GetFolderFromPathAsync(@“\\142.24.56.10\TestShare”);或(@“\\JOHNS-COMPUTER\TestShare”)李>
一个小提示:Visual Studio在xml中将其标为绿色,好像有错误一样,但它仍然有效。您能否分享有关smb配置文件的更多详细信息?问题自行解决。这是一个愚蠢的错误,尽管我不确定。最近几天,我可能只使用了到IP的路径,在这几天中,我做了一些更改,这些更改可能解决了相关问题。在默认的c++/winrt单页项目中,访问samba共享似乎是可行的(我使用了一个文件选择器)。我没有得到任何文件,因为我在提交给CreateFileQueryWithOptions的查询选项中使用了IndexerOption::OnlyUseIndexer。
<Capabilities>
<Capability Name="internetClientServer" />
<Capability Name="internetClient" />
<Capability Name="privateNetworkClientServer" />
<uap:Capability Name="sharedUserCertificates" />
<uap:Capability Name="enterpriseAuthentication" />
<DeviceCapability Name="proximity" />
</Capabilities>