如何在 Windows 上删除普通用户关于符号链接的删除权限

如何在 Windows 上删除普通用户关于符号链接的删除权限

HT我们有一个程序,它会在上面创建临时目录%USERPROFILE%\AppData\Local\Temp并在那里运行,当我退出程序时会删除临时目录。我想让程序在 SSD 分区上而不是在TempSSD 分区上生成临时目录F:\Somewhere

不幸的是,该程序没有任何可以更改临时目录的设置。此环境(Windows)安装在 HDD 中,并且有 SSD 分区。(由于某些问题,我无法在 SSD 上安装 Windows。)

因此,我想我HT在 上创建%USERPROFILE%\AppData\Local\Temp指向 的符号链接F:\Somewhere。这似乎有效。但是,我无法阻止程序删除符号链接HT。换句话说,我需要在退出程序后一次又一次地创建符号链接。

我怎样才能防止从程序中删除符号链接?

我尝试过的解决方案

我尝试%USERPROFILE%\AppData\Local\Temp\HT从普通用户中删除有关符号链接的删除权限(该程序由普通用户运行,而不是 UAC 升级的用户)。

从属性->安全->高级(?,我的环境是日语,但似乎是高级的)1.禁用权限继承2.为普通用户,管理员和系统添加关于删除权限的拒绝策略

但该程序可以删除符号链接。

问题总结

如何防止以非管理员权限运行的程序删除目录的符号链接?

PS 抱歉,有些词不太常用。我用的是日文版的 windows,所以找不到合适的英文短语。

补充笔记

  • 我不想将目录完全更改为另一个目录/分区。只想更改 下的Temp目录。HT~~/Temp/HT

答案1

更改符号链接的权限不起作用,因为父目录上的“删除子文件夹和文件”权限优先于符号链接本身的任何权限。在这种情况下,我不建议修改父目录的权限,因为许多软件都依赖于临时目录,对权限的任何更改都可能导致问题,而这些问题在许多情况下很难诊断。

相反,您可以在符号链接上设置只读标志。请注意,您必须从命令行执行此操作,因为 Windows 资源管理器 GUI 不支持对目录使用只读标志(请参阅脚注)。这些命令应该有效:

cd /d %temp%
attrib /L +r HT

您可能还需要更改权限以防止符号链接被移动或重置只读标志:

icacls HT /L /deny Everyone:(M)

仍然存在软件对无法删除符号链接做出不良响应(例如崩溃)的风险。在这种情况下,您无能为力,只能尝试进行设置,以便根据需要自动重新创建符号链接,但幸运的是,这种情况很少见。

脚注:

Explorer 也没有展示目录的只读标志,甚至会告知用户只读标志对目录没有影响,我想从某种角度来看这是正确的,因为它不会阻止目录被重命名或移动,也不会阻止内容被更改,正如人们所期望的那样。只读标志所做的只是防止删除空目录(或目录符号链接,无论目标是否为空),但在这种情况下,这正是所需要的。

边注:

需要阻止的特定访问权限是写入属性 (WA),以防止重置只读标志,以及同步 (S),以防止符号链接被移动到回收站等。应该注意的是,这种方法只适用于目录符号链接,而不是普通目录,因为访问目录的内容需要同步权限。在 NTFS 中似乎没有任何方法可以在不更改父级权限的情况下阻止移动普通目录。

答案2

%USERPROFILE%\AppData\Local\TempTMP是环境变量的默认值TEMP。应用程序很可能正在使用此变量来获取临时目录。

只需将变量设置为F:\,例如通过 .bat 文件启动,并且您的符号链接不再需要。

相关内容