internal static NtResult <string> GetFileBasePath(SessionState state) { var current_path = state.Path.CurrentLocation; if (!current_path.Provider.Name.Equals("FileSystem", StringComparison.OrdinalIgnoreCase)) { return(NtResult <string> .CreateResultFromError(NtStatus.STATUS_OBJECT_PATH_NOT_FOUND, false)); } return(NtFileUtils.DosFileNameToNt(current_path.Path, false)); }
/// <summary> /// Get the base object manager path for the current powershell directory. /// </summary> /// <returns>The base path.</returns> protected virtual NtResult <string> GetBasePath() { var current_path = SessionState.Path.CurrentLocation; if (current_path.Drive is ObjectManagerPSDriveInfo drive) { string root_path = drive.DirectoryRoot.FullPath; if (root_path == @"\") { root_path = string.Empty; } string relative_path = RemoveDrive(current_path.Path); if (relative_path.Length == 0) { return(NtResult <string> .CreateResult($@"{root_path}")); } return(NtResult <string> .CreateResult($@"{root_path}\{relative_path}")); } return(NtResult <string> .CreateResultFromError(NtStatus.STATUS_OBJECT_PATH_NOT_FOUND, false)); }
private protected NtResult <O> ReOpen <O, X>(NtObjectWithDuplicate <O, X> obj) where O : NtObject where X : Enum { AccessMask mask = GenericAccessRights.MaximumAllowed; using (var o = obj.ReOpen(mask.ToSpecificAccess <X>(), false)) { if (o.IsSuccess) { return(o.Map(x => (O)x.DuplicateObject())); } } AccessMask granted_mask = 0; AccessMask valid_access = obj.NtType.ValidAccess; uint test_mask = 1; while (test_mask < 0x00200000) { if (valid_access.IsAccessGranted(test_mask)) { mask = test_mask; using (var o = obj.ReOpen(mask.ToSpecificAccess <X>(), false)) { if (o.IsSuccess) { granted_mask |= test_mask; } } } test_mask <<= 1; } if (granted_mask.IsEmpty) { return(NtResult <O> .CreateResultFromError(NtStatus.STATUS_ACCESS_DENIED, false)); } return(obj.ReOpen(granted_mask.ToSpecificAccess <X>(), false)); }