windows_erg/security/
target.rs1use crate::Result;
4
5use super::SecurityDescriptor;
6use super::backends;
7
8#[derive(Debug, Clone, PartialEq, Eq)]
10pub enum PermissionTarget {
11 FilePath(String),
13 RegistryPath(String),
15}
16
17impl PermissionTarget {
18 pub fn file(path: impl Into<String>) -> Self {
20 PermissionTarget::FilePath(path.into())
21 }
22
23 pub fn registry(path: impl Into<String>) -> Self {
25 PermissionTarget::RegistryPath(path.into())
26 }
27
28 pub fn read_descriptor(&self) -> Result<SecurityDescriptor> {
30 match self {
31 PermissionTarget::FilePath(path) => backends::file::read_descriptor(path),
32 PermissionTarget::RegistryPath(path) => backends::registry::read_descriptor(path),
33 }
34 }
35
36 pub fn write_descriptor(&self, descriptor: &SecurityDescriptor) -> Result<()> {
38 match self {
39 PermissionTarget::FilePath(path) => backends::file::write_descriptor(path, descriptor),
40 PermissionTarget::RegistryPath(path) => {
41 backends::registry::write_descriptor(path, descriptor)
42 }
43 }
44 }
45}