【发布时间】:2017-05-12 03:28:25
【问题描述】:
我使用 Windows 资源管理器 gui 重新映射/更改了一些特殊文件夹的目标/位置。现在我的一些 powershell 脚本坏了。我不想诉诸硬编码路径,除非我必须这样做,然后,仅作为临时修复。
[System.Environment]::GetFolderPath('Desktop') 显示错误的路径。
[System.Environment]::GetFolderPath('Downloads') 不起作用。
要重新创建:右键单击 win explorer gui 中的“下载”,然后将目标位置更改为 d:\downloads。对 Desktop 执行相同的操作,例如 d:\desktop。
根据Get Path To "Links" (AKA Favorites) Folder,可能有一种方法可以 P/Invoke SHGetKnownFolderPath,但我并不精通如何执行该操作,并且迄今为止的尝试都失败了。但是,我发现 Boe Prox 的函数 https://github.com/proxb/PInvoke/blob/master/Get-KnownFolderPath.ps1 确实使用了 SHGetKnownFolderPath,并且该函数不显示桌面或下载的重新映射值。
您将如何使用 PowerShell 访问重新映射的位置?
更新:为了缩小范围,这个问题似乎只影响 Windows 7(64 位,32 位未测试)。 Get-KnownFolderPath.ps1 脚本在 Windows 10 中正确报告。PowerShell 在所有测试中都是 v5。一个脚本如何访问两个操作系统的重新映射位置?
【问题讨论】:
-
死了你重新启动你的电脑?
-
新的豪华窗口没有帮助。重启没有帮助。
-
Downloads不是SpecialFolders enum 的成员 -
我尝试了 P/Invoke 方法,但仍然得到错误的路径。我发布了我的attempt here。即使在重新启动后。
-
你看过这篇文章吗? stackoverflow.com/questions/17794507/…
标签: powershell windows-7 special-folders