[Mklink,Junction,Icacls] 利用批处理生成用户配置文件中的 Junction

摘要:
Mklink是用于创建连接的命令。有关具体用法,请参阅:Windows 7中的符号链接、Mklink详细信息和Mklink命令。我们需要做的是将用户配置目录C:Users Administrator链接到D:Admin。因此,会发生循环复制,并且原始ApplicationData指向的目录具有循环引用。为了与原始用户目录中的连接保持一致,将attrib和icacls命令添加到批处理中,以设置这些连接的系统和隐藏属性,并添加拒绝用户访问的权限。

最近新配了台主机,在老板的极力推荐下,上了块 SSD 当系统盘,那速度,果真是一个大四个叉,爽!!!大笑

上网查了查,发现使用 SSD 还有不少讲究,主要目的是为了延长硬盘的使用寿命,其中有关转移用户配置文件并利用 mklink 命令进行文件夹链接的文章引起了我的兴趣。由于以前 N 次重装系统留下的备份文件实在太乱,而且重复的文件太多,所以准备仔细整理一番,然后用 mklink 将用户文件设置到其它盘去。经过几天的折腾,终于成功将C:\Users 中的用户文件夹给链接到了 D 盘了,其间发生了各种状况,在此和大家分享下经验和教训。

折腾之前,先普及下基础知识:

Windows (Vista/Win7/Win8) 自带的 mklink 命令可以设置文件和文件夹链接,也叫接合点或解析点,可以通过 dir /a:l 进行查看。

[Mklink,Junction,Icacls] 利用批处理生成用户配置文件中的 Junction第2张

如图中所示,文件或文件夹前具有 <JUNCTION> 标记的,就是接合点。

Junction:连接点或接合点,图标类似快捷方式,当用户对其进行访问时,读写操作实际上是附加在接点所指向的文件或文件夹上的。

比如:Win7 中的 "C:\Documents and Settings",用户目录中的 "Application Data"、"My Documents" 等。

[Mklink,Junction,Icacls] 利用批处理生成用户配置文件中的 Junction第3张

mklink 是用来创建 Junction 的命令,具体使用方法请参考:符号链接Mklink 详解Windows 7 中的 mklink 命令

好吧,Let's 折腾奋斗

本文以 Administrator 作为示例用户,要做的就是将用户配置目录 C:\Users\Administrator 链接到 D:\Admin。

操作共分3个步骤:

1、用 WinPE 复制 C:\Users\Administrator 文件夹到 D:\Admin 中。

我的系统是 Win8,曾使用 robocopy 命令来复制用户目录,不幸的是未能成功:

robocopy "C:\Users\Administrator" "D:\Admin" /copyall /e /xj

总结下失败的原因:

a、本打算偷懒,将 Administrator 中的 Junction 一起复制到 D 盘,所以去掉了 /xj 参数。后果是出现了循环复制,原来 Application Data 指向的目录存在循环引用。仔细想想,因为移动了 Administrator 文件夹,原有 Juncation 的目标也就失效了,所以必须添加 /xj 参数。

b、加上 /xj 参数后,复制成功,但提示有的文件夹无访问权限,不过我没理会。事实证明,这是不对的,因为复制完成后,C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Libraries无权删除,这还让我怎么建立 Junction 啊~~抓狂

c、利用系统自带的用户配置文件管理进行复制、删除,也出现了无权访问的状况委屈

d、据说安全模式可以搞定,可 Shift+F8 都按陷下去了,也没能进入 Win8 的安全模式,真尼玛丢人啊!发火

最终我还是选择了 WinPE 环境复制配置文件,而且一次搞定。

友情提醒:

Windows 8 OS,建议用 Administrator 帐号登录系统,并点开应用商店逛逛,是否下载应用倒无所谓,否则,折腾完后你会惊喜的发现无法从应用商店中安装应用了!尴尬

2、重命名 C:\Users\Administrator 和 D:\Administrator 文件夹。

为了保险起见,C:\Users\Administrator 文件夹不要删除,可以重命名为 Administrator.BAK

D:\Administrator 重命名为 Admin

3、利用 mklink 建立文件夹链接:

mklink /j "C:\Users\Administrator" "D:\Admin"

注:在 WinPE 中也能使用 mklink 命令,可由于缺少环境变量的设定,所以进入系统目录才能执行。

4、在 D:\Admin 文件夹中建立如 "Application Data"、"Cookies"等 Junction 接合点。

让我们用 dir /s /a:l 命令查看下 Administrator 文件夹中的所有 Juncation:

[Mklink,Junction,Icacls] 利用批处理生成用户配置文件中的 Junction第9张

由于目录中的 Junction 比较多,而且分散在不同的子目录中,所以我编写了一个批处理来完成这项工作。为了和原用户目录中的 Junction 保持一致,又在批处理中增加了 attrib 和 icacls 命令,作用是分别为这些 Junction 设置系统、隐藏等属性,并添加了拒绝用户访问的权限。

[Mklink,Junction,Icacls] 利用批处理生成用户配置文件中的 Junction第10张

上脚本咯~~!

d:
cd\
cd Admin

rem mklink

mklink /j "Application Data" "AppData\Roaming"
mklink /j "Cookies" "AppData\Roaming\Microsoft\Windows\Cookies"
mklink /j "Local Settings" "AppData\Local"
mklink /j "My Documents" "Documents"
mklink /j "NetHood" "AppData\Roaming\Microsoft\Windows\Network Shortcuts"
mklink /j "PrintHood" "AppData\Roaming\Microsoft\Windows\Printer Shortcuts"
mklink /j "Recent" "AppData\Roaming\Microsoft\Windows\Recent"
mklink /j "SendTo" "AppData\Roaming\Microsoft\Windows\SendTo"
mklink /j "Templates" "AppData\Roaming\Microsoft\Windows\Templates"
mklink /j "「开始」菜单" "AppData\Roaming\Microsoft\Windows\Start Menu"

mklink /j "AppData\Local\Application Data" "AppData\Local"
mklink /j "AppData\Local\History" "AppData\Local\Microsoft\Windows\History"
mklink /j "AppData\Local\Temporary" Internet Files "AppData\Local\Microsoft\Windows\Temporary Internet Files"

mklink /j "AppData\Roaming\Microsoft\Windows\Start Menu\程序" "AppData\Roaming\Microsoft\Windows\Start Menu\Programs"

mklink /j "Documents\My Music" "Music"
mklink /j "Documents\My Pictures" "Pictures"
mklink /j "Documents\My Videos" "Videos"

rem attrib

attrib +s +h +i "Application Data"
attrib +s +h +i "Cookies"
attrib +s +h +i "Local Settings"
attrib +s +h +i "My Documents"
attrib +s +h +i "NetHood"
attrib +s +h +i "PrintHood"
attrib +s +h +i "Recent"
attrib +s +h +i "SendTo"
attrib +s +h +i "Templates"
attrib +s +h +i "「开始」菜单"

attrib +s +h +i "AppData\Local\Application Data"
attrib +s +h +i "AppData\Local\History"
attrib +s +h +i "AppData\Local\Temporary"

attrib +s +h +i "AppData\Roaming\Microsoft\Windows\Start Menu\程序"

attrib +s +h +i "Documents\My Music"
attrib +s +h +i "Documents\My Pictures"
attrib +s +h +i "Documents\My Videos"

rem icacls

icacls "Application Data" /deny Everyone:(S,RD)
icacls "Cookies" /deny Everyone:(S,RD)
icacls "Local Settings" /deny Everyone:(S,RD)
icacls "My Documents" /deny Everyone:(S,RD)
icacls "NetHood" /deny Everyone:(S,RD)
icacls "PrintHood" /deny Everyone:(S,RD)
icacls "Recent" /deny Everyone:(S,RD)
icacls "SendTo" /deny Everyone:(S,RD)
icacls "Templates" /deny Everyone:(S,RD)
icacls "「开始」菜单" /deny Everyone:(S,RD)

icacls "AppData\Local\Application Data" /deny Everyone:(S,RD)
icacls "AppData\Local\History" /deny Everyone:(S,RD)
icacls "AppData\Local\Temporary" /deny Everyone:(S,RD)

icacls "AppData\Roaming\Microsoft\Windows\Start Menu\程序" /deny Everyone:(S,RD)

icacls "Documents\My Music" /deny Everyone:(S,RD)
icacls "Documents\My Pictures" /deny Everyone:(S,RD)
icacls "Documents\My Videos" /deny Everyone:(S,RD)

将上面的命令行保存为 bat 文件,然后在 cmd 命令行中执行就可以啦~ 希望这个脚本对大家有用处。

其实,我自己使用的是另一个方法,修改了注册表里

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\[User SID]\ProfileImagePath

中的值,这个方法弊端比较多,建议大家不要随意使用。

免责声明:文章转载自《[Mklink,Junction,Icacls] 利用批处理生成用户配置文件中的 Junction》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu18.04优盘只读问题新破天一剑合区SQL(半成品)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

1.AngularJS初探

1.需要什么前端开发环境 1)代码编辑工具 webstorm 2)断点调试工具 chrome插件Batarang 3)版本管理 tortoiseGit 4)代码合并和混淆工具   grunt-contrib-uglify     grunt-contrib-jshint     grunt-contrib-qunit     grunt-contrib...

系统安装-007 CentOS7yum源添加、删除及其yum优化

一、配置阿里云源为主源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bakwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo阿里云官方教程:...

MicroPython基础知识总汇

MicroPython的系统结构 MicroPython系统的经典结构由三部分组成,分别是微控制器硬件、MicroPython固件、用户程序。 MicroPython支持的其它类型开发板,需要自己编译源代码,产生固件,并将固件下载到微控制器中才能运行MicroPython。(此内容我们后面会讲解到,千万别好高骛远!) MicroPython连接电脑 STM...

esp8266物联网开发五:SSL保驾护航

说在前面 数据在网络上传输,如果是明文传输,肯定是不安全的,所以得将数据进行加密。现在主流的加密方式,就是利用SSL/TLS协议加密,其实SSL和TLS可以看做是一个协议,它运行在传输层和应用层之间的一层协议,通过将TCP/UDP传输的数据加密之后,再传送到另一端。这样数据就安全了。 现在的https传输,底层就是利用了SSL/TLS协议进行了加密。当然,...

SQL server 2008 数据库企业版安装教程图解

SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将继续投入和发展以下的关键领域来支持他们的数据平...

CentOS 7下Cloudera Manager及CDH 6.0.1安装过程详解

目录 一、概念介绍 1、CDH 概览 2、Cloudera Manager 概览 二、环境准备 1、软件版本选择 2、节点准备(四个节点) 3、配置主机名和hosts解析(所有节点) 4、关闭防火墙 5、关闭SELinux 6、添加定时任务 7、禁用透明大页面压缩 8、优化交换分区 三、安装 CM 和 CDH 1、配置 Cloudera...