Winapi 如何在网络上使用备份语义(seBackup权限)?
我试图枚举远程文件服务器上的目录。 我想使用备份语义,以便不需要管理员凭据 在测试服务器上,我创建了一个共享:Winapi 如何在网络上使用备份语义(seBackup权限)?,winapi,backup,remote-access,cifs,fileserver,Winapi,Backup,Remote Access,Cifs,Fileserver,我试图枚举远程文件服务器上的目录。 我想使用备份语义,以便不需要管理员凭据 在测试服务器上,我创建了一个共享: 共享权限:所有人完全控制 NTFS权限:仅限系统(我已删除所有其他权限) 我目前正在使用此代码: static void accessWithBackupSemantics() { NetResource netResource = new NetResource() { Scope = ResourceScope.GlobalNetwork,
static void accessWithBackupSemantics() {
NetResource netResource = new NetResource() {
Scope = ResourceScope.GlobalNetwork,
ResourceType = ResourceType.Disk,
DisplayType = ResourceDisplayType.Share,
Usage = ResourceUsage.Connectable,
RemoteName = @"\\target-srv\TargetShare"
};
// open "net use" connection
int netResult = Native.WNetAddConnection2(netResource,
@"***password***",
@"DOMAIN\backup_op_user",
0);
if (netResult == 0 || netResult == 1219) {
// enable privileges
// (this is taken from AplhaFS)
using (new PrivilegeEnabler(Privilege.Backup)) {
try {
// try open remote directory
SafeFileHandle fsHandle = Native.CreateFile(
@"\\target-srv\TargetShare",
EFileAccess.GenericRead,
EFileShare.Read | EFileShare.Write,
IntPtr.Zero,
ECreationDisposition.OpenExisting,
EFileAttributes.BackupSemantics,
IntPtr.Zero);
Console.WriteLine("Handle is valid: " + !fsHandle.IsInvalid);
}
catch (Exception ex) {}
finally {
Native.WNetCancelConnection2(netResource.RemoteName, 0, true);
}
}
}
}
- PrivilegeEnabler课程取自
- 本机win32结构和标志取自
我见过许多本地使用备份语义的示例,但没有一个可以通过网络使用-请不要回复本地使用示例的链接。机器是否加入域?如果没有,UAC将阻止在网络上使用除内置管理员帐户之外的所有管理员权限。如果这是可能的话,我会感到惊讶。@HarryJohnston-是的,机器处于domain@CareyGregory-那么备份产品是如何工作的?您是否声称备份系统总是在本地安装代理?另外:它对管理员有效-如果没有backupSemantics标志,即使管理员也没有访问权限。@CareyGregory,备份权限在网络上有效,尽管IIRC需要两端都有。我有一些工具依赖于此,尽管我总是使用管理员帐户而不是备份操作员帐户。Roman,如果您将服务配置为作为
备份用户运行,而不是在建立网络连接时显式指定凭据,那么它是否有效?(您需要确保用户在本地和远程计算机上都是备份操作员。)该计算机是否已加入域?如果没有,UAC将阻止在网络上使用除内置管理员帐户之外的所有管理员权限。如果这是可能的话,我会感到惊讶。@HarryJohnston-是的,机器处于domain@CareyGregory-那么备份产品是如何工作的?您是否声称备份系统总是在本地安装代理?另外:它对管理员有效-如果没有backupSemantics标志,即使管理员也没有访问权限。@CareyGregory,备份权限在网络上有效,尽管IIRC需要两端都有。我有一些工具依赖于此,尽管我总是使用管理员帐户而不是备份操作员帐户。Roman,如果您将服务配置为作为备份用户运行,而不是在建立网络连接时显式指定凭据,那么它是否有效?(您需要确保用户在本地和远程计算机上都是备份操作员。)