Win10后台任务的文件权限

Posted

技术标签:

【中文标题】Win10后台任务的文件权限【英文标题】:File permissions for Background Tasks in Win10 【发布时间】:2016-08-29 13:14:24 【问题描述】:

我一直在尝试在 Win10 上编写一个仅运行写入文件的后台任务的 C# 应用程序。

在触发后运行下面的代码会引发 UnauthorizeAccessException 异常,“访问路径 'C:\temp' 被拒绝”。 文件和目录对所有人都具有完全访问权限。

另外,后台任务可以访问/运行什么?我正在尝试在现代待机状态下运行后台任务,并让它读取一些寄存器和/或运行另一个工具。在现代待机状态下这是否可能?

这是我尝试这样做的代码:

后台任务:

using Windows.ApplicationModel.Background;
using System.IO;


namespace RuntimeComponent2

    public sealed class Class1 : IBackgroundTask
    

        public void Run(IBackgroundTaskInstance taskInstance)
        
            File.WriteAllText(@"C:\temp\test.txt", "test");
        
    

主页:

using System;
using Windows.ApplicationModel.Background;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace App3

    public sealed partial class MainPage : Page
    
        public MainPage()
        
            this.InitializeComponent();
        

        protected override async void OnNavigatedTo(NavigationEventArgs e)
        
            var exampleTaskName = "MyTask1";

            foreach (var t in BackgroundTaskRegistration.AllTasks)
            
                t.Value.Unregister(true);
            
            await BackgroundExecutionManager.RequestAccessAsync();
            var builder = new BackgroundTaskBuilder();

            builder.Name = exampleTaskName;
            builder.TaskEntryPoint = "RuntimeComponent2.Class1";
            builder.SetTrigger(new SystemTrigger(SystemTriggerType.TimeZoneChange, false));

            BackgroundTaskRegistration task = builder.Register();
        
    

【问题讨论】:

【参考方案1】:

你不能这样做,问题不在于BackgroundTask。在 UWP 应用程序中,您不能在硬盘上写入。您可以读取和写入的唯一位置可以使用 ApplicationData.Current(LocalCacheFolder、LocalFolder 等)或用户使用 SaveFilePicker 显式选择的任何文件夹进行访问。

此外,您需要使用这种语法(Intellisense 建议您使用 File 类,但在 UWP 中并不真正可用)

FileIO.ReadTextAsync(StorageFile file);

【讨论】:

我在下载中成功创建了一个文件,它被放置在这个应用程序特定的文件夹中,我不能在后台任务中使用它吗?通过这个后台类运行其他程序(使用命令行)怎么样?这也不可能吗? @zero_cc,同意Igor Damiani,后台任务可以写文件,但是你的后台任务是TimeZoneChange触发的,你确定你触发了这个触发器吗? @GraceFeng-MSFT。是的,当我触发 TimeZoneChange 触发器时,后台任务确实运行。我使用 Visual Studio 触发功能和手动更改时区触发它,那里没有问题。

以上是关于Win10后台任务的文件权限的主要内容,如果未能解决你的问题,请参考以下文章

WIN7 64位,安装DBC2000,因无权限修改文件,无法安装怎么解决?

win10系统 为啥有完全控制权限也无法消除文件夹只读属性?

win10system权限怎么获得

win10有管理员权限怎么还是删除不了文件

WIN7 下如何获得System32的权限。

system权限怎么获得win10