2017-03-21 27 views
2

Visual StudioでWindowsユニバーサルプラットフォームツールを使用してアプリケーションを作成しました。このアプリケーションでは、ユーザーが選択したファイルの名前を変更する必要がありますが、デバッグ中にPermissionが例外を拒否しています。管理者権限でUWPアプリケーションを実行する方法はありますか?

&をマシンにインストールした後、管理者として実行するオプションがありません。

私は可能な限り検索しましたが、インターネット上で利用可能な解決策はないようですが、この問題を解決する可能性のある質問がありませんでした。

私はマニフェストファイル内のほかのストレージに関連した権限のいずれかのタイプを見ることができない:(

コード: (編集:これは今のコードを働いている)

  FolderPicker folderPicker = new FolderPicker(); 
     folderPicker.SuggestedStartLocation = PickerLocationId.Desktop; 
     folderPicker.FileTypeFilter.Add("*"); 
     folderPicker.ViewMode = PickerViewMode.List; 
     StorageFolder folderPicked = await folderPicker.PickSingleFolderAsync(); 

     if (folderPicked != null) 
     { 

      t_output.Text = folderPicked.Path.ToString(); 
      StringBuilder outputText = new StringBuilder(); 
      IReadOnlyList<StorageFile> fileList = 
      await folderPicked.GetFilesAsync(); 
      int i=0; 
      foreach (StorageFile file in fileList) 
      { 
       outputText.Append(file.Name + "\n"); 
       StorageFile fs = await folderPicked.GetFileAsync(file.Name); 
       await fs.RenameAsync("tanitani0" + i + ".jpg"); 
       i++; 

      } 

私はt_outputを使用しています。Text TextBoxはそれぞれ&を確認するために、File.Copyを使用しないと、すべてのファイルが選択されたフォルダからリストされています。ただし、File.CopyでPermission Deniedの問題が発生する私は直接File.Moveを使用します。File Not Found Exceptionを取得しています。

このタイプの問題を解決する方法は何ですか?

+0

私に解決策を教えてもらえれば誰でも-1を与えますか? :) – Prince

+0

名前を変更しようとしているファイルは何ですか? – NineBerry

+0

NineBerry Sir、私は画像ファイルをテストしていますが、ユーザがテキストファイル、ビデオファイルなどを望むときには、どのような種類のファイルも名前を変更します。 – Prince

答えて

3

UWPにはいくつかのファイルシステムの制限があり、そのうちの1つに遭遇しました。フォルダにアクセスすることで、そのStorageFolderインスタンスを引き続き使用して変更する必要があります。

ファイルのコピーを作成するには、folderPicked.CreateFileAsync(path)を使用し、そのメソッドから返されたStorageFileを使用してストリームデータをコピーします。しかし、ディレクトリ内の個々のファイルにアクセスできるので、StorageFileインターフェイスを利用して、操作を非同期で実行できます。ここでは許可された方法のリストです:

https://docs.microsoft.com/en-us/uwp/api/windows.storage.storagefile

File.Copy(...)を使用するだけで、あなたの分離ストレージ/アプリケーションデータディレクトリで動作します。 folderPickedを持っているからといって、File.Copy(...)にアクセスできるわけではありません。

コードサンプル:サイドノートで

foreach (StorageFile file in fileList) 
{ 
    outputText.Append(file.Name + "\n"); 
    int i = 0; 

    await file.CopyAsync(pickedFolder, "tani" + i + ".jpg"); 
    i++; 
} 

、あなたのint i値は常にゼロになります。増分を続けるには、ループの外側にあることを確認してください。

int i = 0; 

foreach (StorageFile file in fileList) 
{ 
    outputText.Append(file.Name + "\n");   
    await file.CopyAsync(pickedFolder, "tani" + i + ".jpg"); 
    i++; 
} 
+0

ありがとうございましたLaith Sir:Dこれは働いていました^ _^StorageFileオブジェクトを作成し、組み込み関数を使って名前を変更しました:D(私は後でrenameメソッドが動作していて、 – Prince

関連する問題