J'ai travaillé sur ce point pendant quelques heures maintenant, et ça marche. parfaitement sous Windows Vista et Windows 7, mais lorsque je l'exécute sous Windows XP, il échoue sans aucun message. Malheureusement, je n'ai pas d'environnement de développement sous XP et je ne peux donc pas l'exécuter avec un débogueur pour vérifier, ai-je manqué quelque chose d'évident ? Le même morceau de code utilise effectivement un CopyFile
et quelques commandes pour écrire des données vers C:\
donc si c'est une erreur de permissions, c'est une erreur étrange.
EDIT : La valeur de retour est 1223, ERROR_CANCELLED
ce qui signifie annulé par l'utilisateur.
EDIT 2 : J'ai désactivé le s.fFlags et il a immédiatement fait apparaître une boîte de dialogue demandant s'il devait créer le fichier dir-test
alors je suis passé à FOF_NOCONFIRMATION
et il semblait ignorer le drapeau. Je l'utilise également lors d'une suppression en utilisant la même méthode. SHFileOperation
de sorte qu'elle ne s'applique pas non plus aux copies de fichiers.
LPTSTR source = L"dir-test\\*\0";
LPTSTR dest = L"C:\\dir-test\0";
SHFILEOPSTRUCT s = { 0 };
s.hwnd = 0;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = dest;
s.pFrom = source;
int n;
n = SHFileOperation(&s);`