Я разрабатываю приложение, которое должно будет копировать заблокированные файлы. Я собираюсь использовать службу Volume Shadow Copy в Windows XP +, но у меня возникла проблема с реализацией.
В настоящее время я получаю E_ACCESSDENIED при попытке вызова CreateVssBackupComponents()
, который, по моему мнению, сводится к отсутствию привилегий резервного копирования, поэтому я настраиваю токен привилегии процесса, чтобы включить SE_BACKUP_NAME, который успешно выполняется, но я все еще получаю ошибку.
Мой код до сих пор (проверка ошибок удалена для краткости):
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>
Может ли кто-нибудь помочь мне или указать мне правильное направление? Часов поиска в Google Volume Shadow Copy оказалось очень мало.
Спасибо,
J