You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中调用IKnownFolderManager::Redirect方法?

调用KnownFolderManager COM对象方法的PowerShell方案

对于System.__ComObject类型的COM对象,PowerShell支持直接调用其公开的方法和属性,只要你知道对应的方法名、参数要求即可。下面是针对KnownFolderManager对象的具体操作步骤:

1. 查看COM对象的可用方法/属性

先通过Get-Member命令查看该COM对象支持的所有成员,快速了解可调用的方法:

$FolderManager | Get-Member

输出结果里会列出GetFolder、GetFolderIds、GetFolderByName等核心方法。

2. 获取目标Shell文件夹对象

首先需要确定你要修改的Shell文件夹对应的Known Folder ID(比如文档文件夹ID为{FDD39AD0-238F-46AF-ADB4-6C85480369C7},下载文件夹为{374DE290-123F-4565-9164-39C4925E467B}),然后调用GetFolder方法获取目标文件夹对象:

# 已有的初始化代码
$CLSID_KnownFolderManager = "4df0c730-df9d-4ae3-9153-aa6b82e9795a"
$KnownFolderManagerType = [Type]::GetTypeFromCLSID($CLSID_KnownFolderManager)
$FolderManager = [System.Activator]::CreateInstance($KnownFolderManagerType)

# 替换为你要修改的文件夹ID
$targetFolderId = "{FDD39AD0-238F-46AF-ADB4-6C85480369C7}"

# 获取目标KnownFolder对象
$knownFolder = $FolderManager.GetFolder($targetFolderId)

3. 修改Shell文件夹路径

调用SetPath方法修改文件夹路径,注意必须以管理员身份运行PowerShell,否则会因权限不足报错:

# 设置新的目标路径
$newPath = "D:\MyCustomDocuments"

# 调用SetPath方法,第一个参数是重定向标志(0x00000001表示允许重定向到非系统盘)
$knownFolder.SetPath(0x00000001, $newPath)

常用的重定向标志枚举值:

  • 0x00000001:允许将文件夹重定向到非系统卷
  • 0x00000002:修改路径后从快速访问取消固定该文件夹

4. 遍历所有Shell文件夹(可选)

如果需要查看所有可用的Shell文件夹信息,可以调用GetFolderIds方法遍历:

$folderIds = $FolderManager.GetFolderIds()

foreach ($id in $folderIds) {
    $folder = $FolderManager.GetFolder($id)
    Write-Host "文件夹ID: $id, 显示名称: $($folder.Name), 当前路径: $($folder.Path)"
}

内容的提问来源于stack exchange,提问作者user29942439

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:12:41