我目前正在查看我的应用安装程序的安全问题。即使完整的上下文可能与我的问题无关,这里也是我要做的:https://skanthak.homepage.t-online.de/!execute.html
我确实拥有一个具有提升权限的CMD并被模仿为SYSTEM,我使用Sysinternals套件中的PsExec(请参阅this)。
当前文件夹是我的用户文件夹中的一个新的空文件夹。
执行时
mklink /h version.dll C:\Windows\System32\version.dll
我“拒绝访问”。
我已按照答案here中的说明向我的用户,系统和管理员授予了“创建符号链接”权限。
我已经使用提升的资源管理器尽可能地从windows文件夹及其所有子文件夹中删除了写保护(特别是version.dll没有写保护)
我在HyperV中托管的虚拟机中完成所有这些工作。虚拟操作系统是Windows 7 Professional SP1。
为什么命令失败并且ACCESS DENIED?
答案 0 :(得分:3)
您遇到的问题是dll本身的安全问题。
默认情况下,某些受保护的操作系统文件仅允许受信任的安装程序完全控制它们,并将受信任的安装程序设置为文件的默认所有者。
要创建硬链接,您必须从受信任的安装程序获取文件的所有权(否则,您无法更改文件的权限)。
设置文件所有者后,您可以更改文件的权限,以便让用户完全控制。 - 之后您可以随时将自己设置为缩减的权限集,因为您赢了除非你想删除硬链接,否则不再需要它们了
我刚刚测试了这个方法,以验证它仍然有效,虽然在过去我已经想出如何减少对完全控制的需求,但这只是手动筛选可能的特殊权限,所以你如果你愿意,可以这样做(我相信最小是“文件属性”和“特殊文件属性”添加/更改/删除)
无论如何,很高兴解决您的问题。 :)
最初我遇到了同样的问题:
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