【发布时间】:2011-04-27 17:04:32
【问题描述】:
我正在开发一个需要复制锁定文件的应用程序。我打算在 Windows XP+ 中使用卷影复制服务,但我遇到了实施问题。
我目前在尝试调用 CreateVssBackupComponents() 时收到 E_ACCESSDENIED,我认为这是因为没有备份权限,因此我正在调整进程权限令牌以包含 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
【问题讨论】:
标签: c++ windows com backup volume-shadow-service