Je suis en train de développer une application qui devra copier des fichiers verrouillés. J'ai l'intention d'utiliser le service Volume Shadow Copy sous Windows XP + mais je rencontre un problème avec l'implémentation.Volume Shadow Copy en C++
Je reçois actuellement E_ACCESSDENIED lorsque j'essaie d'appeler le CreateVssBackupComponents()
, ce qui, je crois, est de ne pas avoir de privilèges de sauvegarde, donc j'ajuste le jeton de privilège de processus pour inclure SE_BACKUP_NAME qui réussit mais je reçois toujours l'erreur.
Mon code jusqu'à présent (vérification d'erreurs supprimé par souci de concision):
CoInitialize(NULL);
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_BACKUP_NAME, &luid);
NewState.PrivilegeCount = 1;
NewState.Privileges[0].Luid = luid;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &NewState, 0, NULL, NULL);
IVssBackupComponents *pBackup = NULL;
HRESULT result = CreateVssBackupComponents(&pBackup);
// result == E_ACCESSDENIED at this point
pBackup->InitializeForBackup();
<snip>
Quelqu'un peut-il me aider ou me diriger dans la bonne direction? Les heures de googling ont très peu augmenté sur le service Volume Shadow Copy.
Merci, J
Merci pour l'entrée, il semble que je ne vérifiait pas le code d'erreur de AdjustTokenPrivileges() et supposait à tort qu'une réponse différente de zéro était OK. GetLastError() renvoie ERROR_NOT_ALL_ASSIGNED pour SE_BACKUP_NAME, ce qui semble être le problème. Y at-il un était d'activer ce privilège dans Windows 7 sans courir en tant qu'administrateur? – JWood