情况:
我目前正在为我们的新电脑制作默认的 Windows 映像。这些新系统配备了 SSD(250GB)+ HDD(500GB)。我的目标是让主要用户配置文件仍然位于 SSD 上,但将一些用户文件夹(文档、桌面、电影、音乐、下载)重定向到 HDD。因此最终 SSD 仅用于设置和类似的东西,而 HDD 用于大多数用户的文件。
我的方法:
为所有非管理员创建带有登录脚本的本地 GPO:
检查用户文件夹 (%USERNAME%) 是否存在于 d:\Users\ 中,如果不存在则创建必要的文件夹结构并删除 c:\Users\%username% 中现在不需要的文件夹(无重复)
当然,文件夹重定向的注册表也会发生变化。
(我们没有域名,所以我只能通过本地 GPO 进行配置)
这似乎很有效。唯一的问题是,如果有多个用户使用该系统,他们可以毫无问题地访问硬盘上其他用户的数据文件夹。
是否可以在批处理脚本中创建具有特定 NTFS 权限的文件夹,以便只有所有者/创建者(非管理员)和管理员可以访问它。其他普通用户将被阻止。
答案1
文件/文件夹的所有者可以随时更改安全性(即使安全性禁止这样做)。同样,管理员可以随时取得对象的所有权(即使安全性禁止这样做)。
如果管理员创建了某个东西,那么它属于管理员的组而不是个人。
安全性通常是从父文件夹继承的。
有一个名为 Owner/Creator 的安全虚拟用户 - 指的是哪个用户是所有者。
因此,您需要正确设置父文件夹,然后其他一切都应该是自动的。
请记住,该文件夹会在首次登录时或首次使用时自动创建。
更多关于特殊文件夹的信息
单击“开始”-“所有程序”-“附件”-“运行”(或按 Winkey + R)。输入
sendto
可以使用该shell:
协议来打开和创建特殊文件夹。
打开文档并创建(如果不存在)
单击“开始”-“所有程序”-“附件”-“运行”(或按 Winkey + R)。输入
shell:personal
获取可以与 shell 一起使用的文件夹列表:协议
开始 - 所有程序 - 附件 - 右键单击命令提示符并选择以管理员身份运行。输入(或在命令提示符窗口中右键单击并选择粘贴,进行复制和粘贴)。
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 替换为下面要打开的文件夹列表中的数字,如果不存在则创建。Documents 和 Videos 等文件夹有两个文件夹,一个是个人文件夹,另一个是所有用户共用的文件夹。
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)
。
答案2
感谢您的有益评论和回答!
这是我的工作登录脚本:
@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%”/inheritance:r /grant %USERNAME%:(OI)(CI)F
icacls "D:\USERS\%USERNAME%" /grant Administratoren:(OI)(CI)F
/inheritance:r - 这将删除所有继承的权利,然后我授予当前用户和管理员所有权利,这些权利也适用于所有子文件夹和文件(OI),(CI)。