当前位置: 首页 > 编程语言 > C#

Windows8Metro应用程序文件共享访问Share

时间:2023-04-10 23:11:36 C#

Windows8Metro应用程序文件共享访问我正在开发一个Windows8Metro应用程序,我们打算将其部署到公司内的多台平板电脑上。它不适用于Windows应用商店。我们需要应用程序访问公司网络共享上的某些目录,但强制用户使用FilePicker并不是我们想要的。我们的第一次尝试是使用awaitStorageFolder.GetFolderFromPathAsync("J:\");.这不起作用并产生以下异常:mscorlib.dllWinRT信息中出现类型为“System.UnauthorizedAccessException”的未处理异常:无法访问指定的文件或文件夹(J:)。该项目不在应用程序可以访问的位置(包括应用程序数据文件夹、可通过函数访问的文件夹以及StorageApplicationPermissions列表中的持久项目)。验证该文件未标记有系统或隐藏文件属性。附加信息:访问被拒绝。(HRESULT异常:0x80070005(E_ACCESSDENIED))所以我们尝试用驱动器映射到的网络路径替换“J:”。这也不起作用,我们得到了这个异常:mscorlib.dllWinRT信息中发生了类型为“System.UnauthorizedAccessException”的未处理异常:无法访问指定的文件(\域路径JDrive)。验证是否在清单中为此类文件声明了文件类型关联,并且该文件未标记有系统或隐藏文件属性。附加信息:访问被拒绝。(HRESULT异常:0x80070005(E_ACCESSDENIED))我们的应用程序具有以下功能:我们的应用程序没有声明。对于Windows应用商店应用来说,这一切都非常有意义,但对于不进入商店的简单内部应用,它有任何解决方法吗?这是JavaScript和VB/C#/C++文件访问的快速入门。此外,这篇关于Windows应用商店应用程序中的文件访问和权限的文章可能会有用。从这篇文章来看,您似乎使用了正确的功能,但有一个警告:注意:您必须将文件类型关联添加到您的应用程序清单,以声明您的应用程序可以在此位置访问的特定文件类型。这与您看到的错误消息有关。你能试试这是一篇关于如何做到这一点的文章:http://msdn.microsoft.com/en-us/library/windows/apps/hh452684.aspx我还假设你已经检查过以确保你的文件'retryingtoaccessisnotFlagsystemorhiddenfileattribute(根据错误消息)。我们目前正在通过WCFWeb服务访问文件共享来解决此问题。这远非理想,但它为我们提供了所需的东西。下面是管理从运行Windows8.1RT的WinRT设备(MicrosoftSurfaceRT)将文件写入网络共享的代码。基本要点是:此处描述了基本机制:http://msdn.microsoft.com/en-US/library/windows/apps/hh967755.aspx作为奖励,这显示了如何在WinRT中将输出捕获到标准输出应用。代码:#include"App.xaml.h"#include"MainPage.xaml.h"#includeusingnamespaceTestApp;使用命名空间平台;使用命名空间Windows::UI::Xaml::Navigation;使用命名空间并发;//在此函数中写入标准输出的任何内容都将保存到网络共享上的文件中intMAIN(intargc,char**argv){printf("这是保存到网络文件中的日志输出分享!n");返回0;}静态字符缓冲区[1024*1024];Windows::Foundation::IAsyncOperation^MainPage::RunAsync(){returncreate_async([this]()->int{returnMAIN(1,NULL);});}使用命名空间并发;使用命名空间平台;使用命名空间Windows::Storage;使用命名空间Windows::System;voidMainPage::Run(){//在缓冲区中捕获标准输出setvbuf(stdout,buffer,_IOFBF,sizeof(buffer));任务测试任务(RunAsync());testTask.then([this](inttest_result){size_torigsize=strlen(buffer)+1;wchar_t*wcstring=newwchar_t[sizeof(buffer)*sizeof(wchar_t)];size_tconverted_chars=0;mbstowcs_s(&converted_chars,wcstring,origsize,buffer,_TRUNCATE);String^contents=refnewPlatform::String(wcstring);删除[]wcstring;Platform::String^Filename="log_file.txt";Platform::String^FolderName="\\MY-SHARE\shared-folder";create_task(Windows::Storage::StorageFolder::GetFolderFromPathAsync(FolderName)).then([this,Filename,contents](StorageFolder^folder){create_task(folder->CreateFileAsync(Filename,CreationCollisionOption::ReplaceExisting)).then([this,contents](StorageFile^file){create_task(FileIO::WriteTextAsync(file,contents)).then([this,file,contents](tasktask){try{task.get();OutputBox->Text=refnewPlatform::String(L"文件写入成功!");}catch(COMException^ex){OutputBox->Text=refnewPlatform::String(L"文件写入错误!");}});});});});}MainPage::MainPage(){InitializeComponent();跑步();}清单:TestAppSomeoneAssetsStoreLogo.pngTestApp6.36.3文本文件.txt看看这个问题:WinRT中访问网络共享路径无法访问Win8App中的共享位置以上是C#学习教程:Windows8MetroApp文件共享访问共享的所有内容,如果有任何问题使用和需要了解更多C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: