我正在开发一个需要复制被锁定文件的应用程序。我打算在 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>
任何人都可以帮助我或指出我正确的方向吗?在卷影复制服务上,谷歌搜索的时间很少。
谢谢,J