1

ファイルに書き込むバックグラウンドタスクのみを実行するC#アプリケーションをWin10で作成しようとしています。Win10のバックグラウンドタスクのファイルアクセス権

以下のコードを実行すると、 'C:\ temp'というパスへのアクセスが拒否された後、UnauthorizeAccessException例外がスローされます。 ファイルとディレクトリの両方にEveryoneのフルアクセス権があります。

さらに、バックグラウンドタスクにアクセスして実行することはできますか?私は現代のスタンバイの間にバックグラウンドタスクを実行しようとしており、いくつかのレジスタを読み込んだり、別のツールを実行したりしています。現代のスタンバイではまだ可能ですか?ここで

は、そうすることで私の試みのコードです:

バックグラウンドタスク:

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を使用して明示的に選択した任意のフォルダを使用してアクセスできます。

さらに、この構文を使用する必要があります(インテリセンスあなたはクラスファイルを使用することを示唆しているが、UWPで本当に利用できません)

FileIO.ReadTextAsync(StorageFile file); 
+0

私は、ダウンロード中にファイルを作成することに成功した、それが置かれましたこのアプリケーションに固有のフォルダで、私はバックグラウンドタスク中にそれを使用できませんか? このバックグラウンドクラスを介して(コマンドラインを使用して)他のプログラムを実行するとどうなりますか?それはまた不可能ですか? –

+0

@zero_cc、Igor Damianiに同意し、バックグラウンドタスクでファイルを書き込むことは可能ですが、あなたのバックグラウンドタスクは 'TimeZoneChange'によってトリガーされます。 –

+0

@ GraceFeng-MSFT私はTimeZoneChangeトリガを起動すると、うん、バックグラウンドタスクが実行されます。私はVisual Studioのトリガー機能と手動でタイムゾーンを変更することでそれを起動しましたが、問題はありません。 –

関連する問題