Chr*_*isM 5 windows cmd mklink
我目前正在研究我的应用程序安装程序的安全问题。尽管完整的上下文可能与我的问题无关,但这就是我想要做的: https: //skanthak.homepage.t-online.de/ !execute.html
我确实有一个具有提升权限的 CMD,并且被冒充为 SYSTEM,这是我使用 Sysinternals 套件中的 PsExec 进行的(请参阅此)。
当前文件夹是我的用户文件夹内的一个新的空文件夹。
当我执行时
mklink /h version.dll C:\Windows\System32\version.dll
Run Code Online (Sandbox Code Playgroud)
我收到“访问被拒绝”。
我已向我的用户、系统和管理员授予“创建符号链接”权限,如此处答案中所述。
我已使用提升的资源管理器尽可能删除了 windows 文件夹及其所有子文件夹的写保护(特别是 version.dll 没有写保护)
我正在 HyperV 托管的虚拟机中执行所有这些操作。虚拟操作系统是Windows 7 Professional SP1。
为什么命令失败并显示 ACCESS DENIED?
您遇到的问题是 dll 本身的安全问题。
默认情况下,某些受保护的操作系统文件仅允许受信任的安装程序完全控制它们,并将受信任的安装程序设置为文件的默认所有者。
为了创建硬链接,您必须从受信任的安装程序获取文件的所有权(否则,您无法更改文件的权限)。
设置文件所有者后,您可以更改文件的权限,以便为您的用户提供完全控制权。 -- 之后您可以随时将自己设置回减少的权限集,因为除非您想删除硬链接,否则您将不再需要它们
我刚刚自己测试了这种方法,以验证它是否仍然有效,尽管在过去我已经想出了如何减少对完全控制的需求,但这只是手动分配可能的特殊权限的问题,这样你就可以做到这一点如果你喜欢(我相信最小是完整的“文件属性”和“特殊文件属性”添加/更改/删除)
不管怎样,很高兴解决你的问题。:)
最初我有同样的问题:
C:\Admin>mklink /h C:\Admin\testlink\version.dll C:\Windows\System32\version.dll
Access is denied.
Run Code Online (Sandbox Code Playgroud)
获得文件的所有权并授予我的用户完全权限后,链接能够成功建立:
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
Run Code Online (Sandbox Code Playgroud)