Windows 7:从 PowerShell 重定向文件夹?

Windows 7:从 PowerShell 重定向文件夹?

有没有办法在 Windows 7 上使用 PowerShell 重定向文件夹?如果能够以管理员身份重定向到另一个帐户,则可以获得加分。

说清楚点,我想做的是。我不想更改 PS 工作目录、将文件夹移动到某处或创建快捷方式/连接点/符号链接/硬链接(即我在 SU/SE 上能找到解决方案的所有事情)。只是为了避免误解;我知道这是一个相当晦涩的功能。:)

谢谢你!

答案1

此设置由Shell 文件夹/用户 Shell 文件夹键:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

此子项中的条目既可以出现在 Shell Folders 子项中,也可以出现在 User Shell Folders 子项中,还可以出现在 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 中。出现在 User Shell Folders 中的条目优先于 Shell Folders 中的条目。出现在 HKEY_CURRENT_USER 中的条目优先于 HKEY_LOCAL_MACHINE 中的条目。

要修改其他帐户的密钥,您必须加载目标用户的注册表配置单元

PowerShell 将默认通过因 Registry PSProvider 而工作的驱动器公开您的 HKLM 和 HKCU 配置单元。

get-psdrive

get-psprovider

由于我们看到提供程序允许我们映射这些配置单元,因此我们可以更进一步,从文件映射配置单元(在远程系统上更新用户配置单元)。 问题在于 Registry PSProvider 不会扩展到文件。 然而这并没有阻止我们。

reg load 'HKLM\TempUser' $ntuserlocation

cd hklm:\TempUser

gci

New-PSDrive -Name HKMyUser -PSProvider Registry -Root HKLM\TempUser

cd HKMyUser:\

gci

cd c:

Remove-PSDrive HKMyUser

reg unload hklm\TempUser

这一切都很顺利,直到我们尝试卸载该配置单元文件,或者在某些情况下,卸载工作正常,但我们仍然有该配置单元文件的句柄(您可以使用 sysinternals Handle.exe 来查看这一点)

为什么如果我们移除驱动器并要求 Reg.exe 卸载配置单元,会出现这种情况?问题是系统尚未释放仍有指向该文件的指针的内存,从而阻止我们卸载配置单元或阻止我们执行其他操作。

那么你可能会问,诀窍是什么?

要求系统清理那些不再使用的引用。

[gc]::collect()

这使用了 .NET 中 GC 类的静态方法 Collect,用于强制垃圾收集器运行并删除那些未使用的引用。

参考:

相关内容