2013-03-20 1 views
0

J'ai une application Windows C++ qui ouvre un fichier (et le maintient ouvert) comme suit:Comment autoriser d'autres applications à ouvrir un fichier que je dois conserver ouvert?

FILE* fp = NULL; 
errno_t result = _wfopen_s(&fp, L"MyRawData.dat", L"wb"); 

Cela fonctionne bien, mais quand je tente de servir ce fichier via Filezilla il refuse l'accès au fichier quand je essayez de le télécharger (bien que vous cochiez l'option "Autoriser le téléchargement de fichiers ouverts à l'écriture par un autre processus").

Est-ce quelque chose que j'ai mal fait dans mon logiciel ou une limitation du problème de Filezilla/windows générales?

+0

C'est sans doute hors sujet, mais que signifie «L» devant les littéraux de chaîne? – Philipp

+0

Le préfixe L fait de la chaîne une chaîne wchar_t. –

Répondre

1

De l'documentation de ladite fonction:

fichiers ouverts par fopen_s et _wfopen_s ne sont pas partageables. Si vous souhaitez qu'un fichier soit partageable, utilisez _fsopen, _wfsopen avec la constante de mode de partage appropriée (par exemple, _SH_DENYNO pour le partage en lecture/écriture).

+0

Est-ce que '_SH_DENYWR' autoriserait juste l'accès en lecture? –

+0

oui, voir [ici] (http://msdn.microsoft.com/fr-fr/library/8f30b0db (v = vs.110) .aspx) pour toutes les options – msam

Questions connexes