2008-12-11 11 views
7

J'ai écrit une application Windows Forms C# pour fusionner les fichiers et dossiers d'un dossier distant sur une machine (le dossier "source" est un lecteur mappé - "Z: \ dossier ") avec un autre dossier distant sur une autre machine (le dossier" destination "est un chemin UNC vers un dossier partagé -" \\ computername \ sharedfolder "). J'ai les autorisations complètes pour les deux dossiers. Lorsque j'exécute le programme sur ma machine locale, cela fonctionne correctement, mais lorsque j'essaie de l'exécuter à partir du dossier source, il échoue avec une exception de sécurité. L'erreur se produit lors de l'appel du constructeur DirectoryInfo pour le dossier de destination (par exemple, DirectoryInfo (@ "\\ computername \ sharedfolder") Je suppose que le problème est dû au fait que j'exécute le programme à partir d'un lecteur mappé.Exécution d'un programme .NET à partir d'un lecteur mappé ou d'un dossier partagé


l'exception est spécifique: Demande d'autorisation de type 'System.Security.Permissions.FileIOPermission, mscorlib, version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' a échoué


.

MISE À JOUR

d'accord, je suis mon application dans Visual Studio 2008 (il a déjà été codé en 2005), ciblé le .NET Framework 3.5, compilé et essayé à nouveau.

J'ai eu exactement la même erreur.


MISE À JOUR - RÉSOLUTION

Je l'ai essayé avec .NET 3.5, et il ne fonctionne pas, je remarque que vous avez dit 3.5 SP1. Le service pack est définitivement nécessaire.

Problème résolu. Je vous remercie.

Répondre

6

Vous devez activer les autorisations FullTrust pour l'application. Les applications .NET qui s'exécutent sur un partage réseau reçoivent des autorisations de sécurité Intranet local et s'exécutent ainsi dans un sandbox.

Voici un fichier batch que j'ai écrit pour l'une de nos applications de test qui fonctionne sur le réseau. Cela devrait vous permettre de fonctionner avec des modifications mineures.

@ECHO OFF 
SET CASPOL=%windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe 
CLS 

%CASPOL% -pp off 
%CASPOL% -m -ag 1.2 -url file://server/directory/* FullTrust 

Comme indiqué ci-dessus, .NET 3.5 supprime ce comportement.

Questions connexes