1

Ситуация:

В настоящее время я делаю образ Windows по умолчанию для наших новых компьютеров. Эти новые системы поставляются с SSD (250 ГБ) + HDD (500 ГБ). Моя цель - сохранить основной профиль пользователя на SDD, но перенаправить часть папки пользователя (Документы, Рабочий стол, Фильмы, Музыка, Загрузки) на жесткий диск. Таким образом, в конце SSD используется только для настроек и тому подобного, а HDD для большинства пользовательских файлов.

Мой метод:

Создайте локальный объект групповой политики со сценарием входа для всех пользователей, не являющихся администраторами:

проверьте, существует ли папка пользователя (% USERNAME%) в d:\Users\, если нет, создайте необходимую структуру папок и удалите ненужные теперь папки в папке c:\Users\% username% (без дубликатов).

И, конечно, изменения реестра для перенаправления папок.

(у нас нет домена, поэтому я должен настроить это только через локальные объекты групповой политики)

Кажется, это отлично работает. Единственная проблема заключается в том, что если в системе используется несколько пользователей, они могут без проблем получить доступ к папке данных других пользователей на жестком диске.

Мой вопрос: возможно ли создать папку в пакетном скрипте с определенными правами NTFS, чтобы только владелец / создатель (не администратор) и администраторы могли получить к ней доступ? другие обычные пользователи будут заблокированы.

2 ответа2

1

Владелец файла / папки всегда может изменить защиту (даже если безопасность запрещает это). Также администратор всегда может стать владельцем объекта (даже если безопасность запрещает это).

Если администратор создает что-то, то это принадлежит группе администратора, а не отдельному человеку.

Безопасность обычно наследуется из родительской папки.

Существует виртуальный пользователь безопасности под названием Владелец / Создатель, который относится к тому, кто является владельцем.

Так что вам нужно правильно настроить родительскую папку, тогда все остальное должно быть автоматическим.

Помните, что папка создается автоматически при первом входе в систему и всегда при первом использовании.

Moreon специальные папки

Нажмите Пуск - Все программы - Стандартные - Выполнить (или нажмите Winkey + R). Тип

sendto

Можно использовать shell: протокол для открытия и создания специальных папок.

Чтобы открыть документы и создать, если он не существует

Нажмите Пуск - Все программы - Стандартные - Выполнить (или нажмите Winkey + R). Тип

shell:personal

Чтобы получить список папок, которые можно использовать с оболочкой: протокол

Пуск - Все программы - Стандартные - Щелкните правой кнопкой мыши Командная строка и выберите Запуск от имени администратора. Введите (или скопируйте и вставьте, щелкнув правой кнопкой мыши в окне командной строки и выбрав Вставить).

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\FolderDescriptions" /v Name /s |findstr /c:Name|sort /+23

Который на Vista возвращается

Name    REG_SZ    AddNewProgramsFolder
Name    REG_SZ    Administrative Tools
Name    REG_SZ    AppData
Name    REG_SZ    AppUpdatesFolder
Name    REG_SZ    Cache
Name    REG_SZ    CD Burning
Name    REG_SZ    ChangeRemoveProgramsFolder
Name    REG_SZ    Common Administrative Tools
Name    REG_SZ    Common AppData
Name    REG_SZ    Common Desktop
Name    REG_SZ    Common Documents
Name    REG_SZ    Common Programs
Name    REG_SZ    Common Start Menu
Name    REG_SZ    Common Startup
Name    REG_SZ    Common Templates
Name    REG_SZ    CommonDownloads
Name    REG_SZ    CommonMusic
Name    REG_SZ    CommonPictures
Name    REG_SZ    CommonVideo
Name    REG_SZ    ConflictFolder
Name    REG_SZ    ConnectionsFolder
Name    REG_SZ    Contacts
Name    REG_SZ    ControlPanelFolder
Name    REG_SZ    Cookies
Name    REG_SZ    CredentialManager
Name    REG_SZ    CryptoKeys
Name    REG_SZ    CSCFolder
Name    REG_SZ    Default Gadgets
Name    REG_SZ    Desktop
Name    REG_SZ    Downloads
Name    REG_SZ    DpapiKeys
Name    REG_SZ    Favorites
Name    REG_SZ    Fonts
Name    REG_SZ    Gadgets
Name    REG_SZ    Games
Name    REG_SZ    GameTasks
Name    REG_SZ    History
Name    REG_SZ    InternetFolder
Name    REG_SZ    Links
Name    REG_SZ    Local AppData
Name    REG_SZ    LocalAppDataLow
Name    REG_SZ    LocalizedResourcesDir
Name    REG_SZ    MAPIFolder
Name    REG_SZ    My Music
Name    REG_SZ    My Pictures
Name    REG_SZ    My Video
Name    REG_SZ    MyComputerFolder
Name    REG_SZ    NetHood
Name    REG_SZ    NetworkPlacesFolder
Name    REG_SZ    OEM Links
Name    REG_SZ    Original Images
Name    REG_SZ    Personal
Name    REG_SZ    PhotoAlbums
Name    REG_SZ    Playlists
Name    REG_SZ    PrintersFolder
Name    REG_SZ    PrintHood
Name    REG_SZ    Profile
Name    REG_SZ    ProgramFiles
Name    REG_SZ    ProgramFilesCommon
Name    REG_SZ    ProgramFilesCommonX86
Name    REG_SZ    ProgramFilesX86
Name    REG_SZ    Programs
Name    REG_SZ    Public
Name    REG_SZ    PublicGameTasks
Name    REG_SZ    Quick Launch
Name    REG_SZ    Recent
Name    REG_SZ    RecycleBinFolder
Name    REG_SZ    ResourceDir
Name    REG_SZ    SampleMusic
Name    REG_SZ    SamplePictures
Name    REG_SZ    SamplePlaylists
Name    REG_SZ    SampleVideos
Name    REG_SZ    SavedGames
Name    REG_SZ    Searches
Name    REG_SZ    SearchHomeFolder
Name    REG_SZ    SendTo
Name    REG_SZ    Start Menu
Name    REG_SZ    Startup
Name    REG_SZ    SyncCenterFolder
Name    REG_SZ    SyncResultsFolder
Name    REG_SZ    SyncSetupFolder
Name    REG_SZ    System
Name    REG_SZ    SystemCertificates
Name    REG_SZ    SystemX86
Name    REG_SZ    Templates
Name    REG_SZ    TreePropertiesFolder
Name    REG_SZ    UserProfiles
Name    REG_SZ    UsersFilesFolder
Name    REG_SZ    Windows

Вот другой способ. Суть этого поста в том, что папки имеют краткие описания.

В соответствии с программной документацией выполнение специальной команды для открытия специальной папки создаст эту папку, если она не существует.

Если для vDir задано одно из значений ShellSpecialFolderConstants и специальной папки не существует, эта функция создаст эту папку.

Создайте следующие две строки в блокноте. Замените 0 после открытия на номер из списка ниже папки, которую вы хотите открыть и создать, если она не существует. Папки, такие как «Документы» и «Видео», имеют две папки: личную и одну, общую для всех пользователей.

set objShell = CreateObject("Shell.Application")
objShell.Open(0)

Вот пример для двух папок с видео.

Эта маленькая программа пытается открыть вашу личную папку видео и общую папку видео.

Скопируйте ниже три строки в блокнот. Сохраните его как «OpenAndCreateVideoFolders.vbs» (кавычки являются частью того, что вам нужно ввести для имени, и исчезнут после сохранения)

set objShell = CreateObject("Shell.Application")
objShell.Open(13)
objShell.Open(55)

Дважды щелкните по маленькой программе, которую вы только что написали.

Список специальных папок

CSIDL_DESKTOP 0 Desktop 
CSIDL_INTERNET 1 Internet Explorer (icon on desktop) 
CSIDL_PROGRAMS 2 Start Menu\Programs 
CSIDL_CONTROLS 3 My Computer\Control Panel 
CSIDL_PRINTERS 4 My Computer\Printers 
CSIDL_PERSONAL 5 My Documents 
CSIDL_FAVORITES 6 \Favorites 
CSIDL_STARTUP 7 Start Menu\Programs\Startup 
CSIDL_RECENT 8 \Recent 
CSIDL_SENDTO 9 \SendTo 
CSIDL_BITBUCKET 10 \Recycle Bin 
CSIDL_STARTMENU 11 \Start Menu 
CSIDL_MYDOCUMENTS 5 Personal was just a silly name for My Documents 
CSIDL_MYMUSIC 12 "My Music" folder 
CSIDL_MYVIDEO 13 "My Videos" folder 
CSIDL_DESKTOPDIRECTORY 16 \Desktop 
CSIDL_DRIVES 17 My Computer 
CSIDL_NETWORK 18 Network Neighborhood (My Network Places) 
CSIDL_NETHOOD 19 \nethood 
CSIDL_FONTS 20 windows\fonts 
CSIDL_TEMPLATES 21 
CSIDL_COMMON_STARTMENU 22 All Users\Start Menu 
CSIDL_COMMON_PROGRAMS 23 All Users\Start Menu\Programs 
CSIDL_COMMON_STARTUP 24 All Users\Startup 
CSIDL_COMMON_DESKTOPDIRECTORY 25 All Users\Desktop 
CSIDL_APPDATA 26 \Application Data 
CSIDL_PRINTHOOD 27 \PrintHood 
CSIDL_LOCAL_APPDATA 28 \Local Settings\Applicaiton Data (non roaming) 
CSIDL_ALTSTARTUP 29 non localized startup 
CSIDL_COMMON_ALTSTARTUP 30 non localized common startup 
CSIDL_COMMON_FAVORITES 31 Never actually implemented 
CSIDL_INTERNET_CACHE 32 Temp Internet Files 
CSIDL_COOKIES 33 Internet cookies 
CSIDL_HISTORY 34 Internet History 
CSIDL_COMMON_APPDATA 35 All Users\Application Data 
CSIDL_WINDOWS 36 GetWindowsDirectory() 
CSIDL_SYSTEM 37 GetSystemDirectory() 
CSIDL_PROGRAM_FILES 38 C:\Program Files 
CSIDL_MYPICTURES 39 C:\Program Files\My Pictures 
CSIDL_PROFILE 40 USERPROFILE 
CSIDL_SYSTEMX86 41 x86 system directory on RISC 
CSIDL_PROGRAM_FILESX86 42 x86 C:\Program Files on RISC 
CSIDL_PROGRAM_FILES_COMMON 43 C:\Program Files\Common 
CSIDL_PROGRAM_FILES_COMMONX86 44 x86 Program Files\Common on RISC 
CSIDL_COMMON_TEMPLATES 45 All Users\Templates 
CSIDL_COMMON_DOCUMENTS 46 All Users\Documents 
CSIDL_COMMON_ADMINTOOLS 47 All Users\Start Menu\Programs\Administrative Tools 
CSIDL_ADMINTOOLS 48 \Start Menu\Programs\Administrative Tools 
CSIDL_CONNECTIONS 49 Network and Dial-up Connections 
CSIDL_COMMON_MUSIC 53 All Users\My Music 
CSIDL_COMMON_PICTURES 54 All Users\My Pictures 
CSIDL_COMMON_VIDEO 55 All Users\My Video 
CSIDL_RESOURCES 56 Resource Direcotry 
CSIDL_RESOURCES_LOCALIZED 57 Localized Resource Direcotry 
CSIDL_COMMON_OEM_LINKS 58 Links to All Users OEM specific apps 
CSIDL_CDBURN_AREA 59 USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning 
CSIDL_COMPUTERSNEARME 60 Computers Near Me (computered from Workgroup membership) 

,

0

Спасибо за полезные комментарии и ответы!

это мой рабочий скрипт входа в систему:

@echo off
IF EXIST D:\USERS\%USERNAME% GOTO EXISTS
GOTO FIRSTLOGON

:FIRSTLOGON
:: Create user folder on D:\
mkdir "D:\USERS\%USERNAME%"
:: copy folder structure from template to new user folder
xcopy "D:\USERS\template\*.*" "D:\USERS\%USERNAME%" /E /Y /Q
:: Set rights on new folder
::: Remove inheritance, grant owner everything and admin everything
icacls "D:\USERS\%USERNAME%" /inheritance:r /grant %USERNAME%:(OI)(CI)F
icacls "D:\USERS\%USERNAME%" /grant Administratoren:(OI)(CI)F
:: User Notification
msg "%username%" Profilefiles were created, please logon again.
:: Logoff
ping 1.1.1.1. -n 1 -w 5000 > NUL
shutdown /l /f
GOTO END

:SECONDLOGON
:: Remove old user folders on C:\
IF EXIST "c:\Users\%username%\Desktop" rmdir /S /Q "c:\Users\%username%\Desktop"
IF EXIST "c:\Users\%username%\Documents" rmdir /S /Q "c:\Users\%username%\Documents"
IF EXIST "c:\Users\%username%\Downloads" rmdir /S /Q "c:\Users\%username%\Downloads"
IF EXIST "c:\Users\%username%\Music" rmdir /S /Q "c:\Users\%username%\Music"
IF EXIST "c:\Users\%username%\Pictures" rmdir /S /Q "c:\Users\%username%\Pictures"
GOTO END

:EXISTS
IF EXIST "c:\Users\%username%\Desktop" GOTO SECONDLOGON
echo Benutzerordner existiert bereits

:END

Перенаправление папок выполняется пользовательской локальной группой (по умолчанию она отсутствует в Windows).

Конечно, путь импорта - это две строки

icacls "D:\USERS\% USERNAME%" / наследование:r / grant% USERNAME%:(OI)(CI)F

icacls "D:\USERS\% USERNAME%" / grant Администратор:(OI)(CI)F

/ наследование:r - это удаляет все неотъемлемые права, а затем я предоставляю текущему пользователю и администратору все права, которые также применяются ко всем подпапкам и файлам (OI), (CI).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .