2017-03-21 5 views
2

Ich habe eine Anwendung mit Windows Universal Platform Tools in Visual Studio erstellt. In dieser Anwendung muss ich Dateien umbenennen, die vom Benutzer ausgewählt wurden, aber während des Debuggens erhalte ich die Ausnahme "Permission denied".Gibt es eine Möglichkeit, UWP-Anwendung mit Administratorrechten auszuführen?

Nach dem Packen & Installation auf der Maschine Ich bekomme keine Option, es als Administrator auszuführen.

Ich habe so viel wie ich konnte gesucht, aber es scheint keine Lösung im Internet verfügbar zu sein oder ich habe jede Frage vermisst, die dieses Problem möglicherweise lösen könnte.

ich nicht jede Art von Berechtigungen in Bezug auf Lagerung als auch in Manifest-Datei sehen :(

Code: (Edit: Das funktioniert jetzt-Code)

  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++; 

      } 

ich verwende t_output .Text TextBox um jedes zu überprüfen & alles geht so, wie ich es erwarte, wenn ich File.Copy nicht benutze, dann wird jede Datei aus dem ausgewählten Ordner aufgelistet, so wie ich es will Aber das Problem der Berechtigung verweigert mit File.Copy bekommen :(if Ich verwende direkt File.Move Ich erhalte dann Datei nicht gefunden Ausnahme.

Wie kann man diese Art von Problem lösen?

+0

Wer gibt -1, wenn Sie mir die Lösung auch sagen könnten? :) – Prince

+0

Welche Dateien möchten Sie umbenennen? – NineBerry

+0

NineBerry Sir, ich teste auf Bilddateien, aber jeder Dateityp wird umbenannt, wenn der Benutzer zB Textdateien, Videodateien usw. möchte. – Prince

Antwort

3

Es gibt ein paar Dateisystemeinschränkungen in UWP, und Sie sind gerade in einen von ihnen gelaufen. Wenn Sie Zugriff auf den Ordner erhalten, müssen Sie diese StorageFolder Instanz weiterhin verwenden, um Änderungen vorzunehmen.

Um eine Kopie der Datei zu erstellen, verwenden Sie folderPicked.CreateFileAsync(path) und verwenden Sie die von dieser Methode zurückgegebene StorageFile, um die Stream-Daten zu kopieren. Da Sie jedoch Zugriff auf die einzelnen Dateien im Verzeichnis haben, können Sie die StorageFile-Schnittstelle nutzen und Ihre Operationen asynchron ausführen. Hier ist eine Liste von Methoden erlaubt:

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

Mit File.Copy(...) wird nur in Ihren isolierten Speicher/Anwendungsdaten Verzeichnissen arbeiten. Nur weil Sie haben bedeutet nicht File.Copy(...) hat Zugriff.

Codebeispiel:

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

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

Auf einer Seite zur Kenntnis, Ihr int i Wert immer Null sein. Stellen Sie nur sicher, dass es sich außerhalb der Schleife befindet, um die Inkrementierung fortzusetzen.

+0

Vielen Dank Laith Sir: D Dies funktionierte^_^Ich erstellte StorageFile-Objekt und benannte es mit der eingebauten Funktion: D (Ja, Sir, ich merkte später, während Umbenennungsmethode funktioniert & ich bekam Fehler) – Prince

Verwandte Themen