windows - 在 system32 中创建到 dll 的硬链接(hard link) mklink 导致访问被拒绝

标签 windows cmd mklink

场景

我目前正在查看我的应用程序安装程序的安全问题。尽管完整的上下文可能与我的问题无关,但我正在尝试做的是:https://skanthak.homepage.t-online.de/!execute.html

问题

我确实有一个具有更高权限的 CMD,并被模拟为 SYSTEM,我使用 Sysinternals 套件中的 PsExec 进行了模拟(请参阅 this)。

当前文件夹是我的用户文件夹中的一个新的空文件夹。

当我执行

mklink /h version.dll C:\Windows\System32\version.dll

我收到“拒绝访问”

我已将“创建符号链接(symbolic link)”权限授予我的用户、系统和管理员,如答案 here 中所述.

我已经使用提升的资源管理器尽可能地从 windows 文件夹及其所有子文件夹中删除了写保护(特别是 version.dll 没有写保护)

我正在 HyperV 中托管的虚拟机中执行所有这些操作。虚拟操作系统是 Windows 7 Professional SP1。

问题

为什么命令失败并显示 ACCESS DENIED?

最佳答案

您遇到的问题是 dll 本身的安全问题。

默认情况下,某些 protected 操作系统文件只允许受信任的安装程序完全控制它们,并将受信任的安装程序设置为文件的默认所有者。

为了创建硬链接(hard link),您必须从受信任的安装程序取得文件的所有权(否则,您无法更改文件的权限)。

设置文件所有者后,您可以更改文件的权限以授予您的用户完全控制权。 -- 之后您可以随时将自己设置回缩减的权限集,因为您赢了除非您想删除硬链接(hard link),否则不再需要它们

我刚才自己测试了这个方法以验证它仍然有效,尽管在过去我已经想出如何减少对低于完全控制的需求,但这只是手动获得可能的特殊权限的问题所以你如果你愿意可以这样做(我相信最小值是完整的“文件属性”和“特殊文件属性”添加/更改/删除)

无论如何,很高兴能解决您的问题。 :)

最初我遇到了同样的问题:

C:\Admin>mklink /h C:\Admin\testlink\version.dll C:\Windows\System32\version.dll
Access is denied.

取得文件的所有权并授予我的用户完全权限后,链接成功建立:

C:\Admin>mklink /h C:\Admin\testlink\version.dll C:\Windows\System32\version.dll
Hardlink created for C:\Admin\testlink\version.dll <<===>> C:\Windows\System32\version.dll

关于windows - 在 system32 中创建到 dll 的硬链接(hard link) mklink 导致访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40545572/

相关文章:

windows - 使用Pester检查Windows磁盘加密

windows - 无法使用git : "git fatal: unknown error occurred while reading the configuration files"

permissions - 远程sc OpenSCManager查询失败5访问被拒绝

vb.net - 如何从 vb.net 应用程序运行 Windows 命令 "mklink"?

c - x86_64-w64-mingw32 中的 setjmp/longjmp

javascript - 打开网站,传递本地镜像作为参数

windows - 使用 cmd 跳过一次即将到来的计划任务

node.js - 删除 Windows 10 上的所有文件夹

windows-7 - mklink 上的访问被拒绝