- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(背景信息:随意跳到最后一段)
目前,我有一个硬盘驱动器,它是另一台计算机上 O/S 驱动器的完整镜像。它是一个外部 USB 驱动器,连接到写拦截器,然后连接到我的电脑。我正在使用它来测试一些用于复制文件(除其他外)的代码,我遇到了一个无法仅使用管理员权限复制的文件。
在阅读了 Windows 中的权限后,我确定我需要备份权限才能访问本地驱动器上的所有文件。我已经通过使用带有“/b”标志的 robocopy 来验证这就是我所需要的,该标志启用了副本的备份模式。一切都复制得很好,没有问题。我只需要能够让我自己的代码能够在备份权限下运行。
在我的代码 (C#) 中,我已经尝试实现必要的 winapi 调用 (AdjustTokenPrivileges) 来为当前进程提供未经验证结果的备份权限。我使用了本文 (http://www.codeproject.com/Articles/21202/Reparse-Points-in-Vista) 中的一些代码来使用已知的“有效”实现。在代码项目中,我尝试添加一个带有“拒绝访问”错误的 File.Copy()。我也尝试过使用 winapi 调用 CopyFileW() 并出现相同的错误。在这一点上我没有想法:(。
作为引用(来自文章),这是我用于权限升级的代码:
bool success;
IntPtr token;
TOKEN_PRIVILEGES tokenPrivileges = new TOKEN_PRIVILEGES();
tokenPrivileges.Privileges = new LUID_AND_ATTRIBUTES[1];
success = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES,
out token);
if (success)
{
// null for local system
success = LookupPrivilegeValue(null, SE_BACKUP_NAME,
out tokenPrivileges.Privileges[0].Luid);
if (success)
{
tokenPrivileges.PrivilegeCount = 1;
tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
success = AdjustTokenPrivileges(
token,
false,
ref tokenPrivileges,
Marshal.SizeOf(tokenPrivileges),
IntPtr.Zero,
IntPtr.Zero);
}
CloseHandle(token);
}
编辑:要添加更多信息,如果我按原样运行项目,则链接的 ReparsePoint 代码工作正常。当我删除对 AdjustTokenPrivilege 的调用时,它会抛出“拒绝访问”错误。
最佳答案
您仍然需要使用 FILE_FLAG_BACKUP_SEMANTICS
调用 CreateFile
标志指定。这意味着您不能使用标准 Windows API,因为它们没有指定该标志。
关于c# - 这个 SeBackupPrivilege(备份模式)实现有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11113097/
(背景信息:随意跳到最后一段) 目前,我有一个硬盘驱动器,它是另一台计算机上 O/S 驱动器的完整镜像。它是一个外部 USB 驱动器,连接到写拦截器,然后连接到我的电脑。我正在使用它来测试一些用于复制
(背景信息:随意跳到最后一段) 目前,我有一个硬盘驱动器,它是另一台计算机上 O/S 驱动器的完整镜像。它是一个外部 USB 驱动器,连接到写拦截器,然后连接到我的电脑。我正在使用它来测试一些用于复制
我是一名优秀的程序员,十分优秀!