2017-07-14 1 views
0

C# question ici. Je continue d'obtenir l'accès est refusé lorsque vous essayez de déplacer un fichier XML. Je sais que le problème est qu'il crée un fichier XML temporaire sans privilèges d'administration dont il a besoin, et j'ai essayé de modifier l'appmanifest avec la ligne require admin = true en vain. J'ai également essayé de définir les permissions en dehors du programme et d'exécuter Visual Studio en tant qu'administrateur.C# Accès Refusé lors de la tentative de copie et de fichier XML

Link to the pastebin code. 
https://pastebin.com/M7dRTXHY 

enter image description here

Je avons obtenu une réponse à cela en utilisant hier un code complètement différent, mais mon professeur a dit que je dois le faire de cette façon. J'ai passé des heures à essayer de déboguer cela et je perds la tête.

Il s'agit également d'une application de téléphone Windows 10, pas sûr si cela change quelque chose. Je me rends compte qu'il y a un million et une autre question semblable à ceci mais je ne peux rien obtenir au travail.

Ceci est le tutoriel exact que je suivais directement de mon cours. enter image description here

+0

Est-ce que 'InstalledLocation' n'est pas un dossier en lecture seule? Vous essayez de faire un Move sur un fichier, qui essaierait de supprimer le fichier source, mais il n'y a pas d'autorisation pour le faire. Voir si la copie fonctionne, car cela permettra d'éliminer le problème d'autorisation sur la destination. – James

+0

Hey james merci pour la réponse. Je penche vers qui j'ai été enseigné incorrectement mais j'ai téléchargé une photo du tutoriel, seriez-vous capable de jeter un coup d'oeil et voir si j'ai fait une erreur quelque part? – Rick1990

Répondre

1

Utilisez le StorageFile pour le déplacer/copier/supprimer des opérations, etc:

private async void Grid_Loading(FrameworkElement sender, object args) 
{ 
    Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current; 
    StorageFolder installedLocation = package.InstalledLocation; 
    StorageFolder targetLocation = ApplicationData.Current.LocalFolder; 

    var targetFile = await installedLocation.GetFileAsync("Contacts.xml"); 
    await targetFile.MoveAsync(targetLocation); 
    TARGETFILEPATH = ApplicationData.Current.LocalFolder.Path.ToString() + "\\Contacts.xml"; 
    loadContacts(); 
} 

plus sur StorageFiles here.

+0

Salut mec merci pour sa réponse. C'est comme ça qu'on m'a montré comment le faire par mon cours. Êtes-vous en train de dire que c'est faux? http://imgur.com/a/5BFzB Je ne serais pas surpris si le cours était faux. Je veux juste m'assurer que ce n'était pas mon erreur. – Rick1990

+1

Oui, c'est faux. Il ne fonctionnera pas pour gagner le téléphone/uwp. –

+0

Ok merci pour le commentaire. Est-ce que cela signifie également que le loadContacts() ici https://pastebin.com/YUigWa46 est également faux. Obvisouly j'ai besoin de savoir quoi changer le TARGETFILEPATH aussi puisqu'il n'existe plus, mais est-ce si loin? – Rick1990