AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1528616
Accepted
Anonymous
Anonymous
Asked: 2020-02-27 15:02:17 +0800 CST2020-02-27 15:02:17 +0800 CST 2020-02-27 15:02:17 +0800 CST

如何获取 Windows 中所有 shell 位置的列表

  • 772

在 Windows 中,是否有一个命令(最好)或注册表项包含 Windows 中的所有资源管理器 shell 位置(Computer、、UsersFiles等)而没有外部程序?

windows powershell
  • 4 4 个回答
  • 877 Views

4 个回答

  • Voted
  1. Best Answer
    Keith Miller
    2020-02-27T20:42:34+08:002020-02-27T20:42:34+08:00

    大多数(如果不是全部)各种HKLM\...\FolderDescriptions条目的名称都与该Shell:命令一起使用。您可以使用PowerShell列出它们:

    $FD = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions'
    (gp (gci $FD).PSPath).Name
    
    PS C:\...\keith>$FD = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions'
    >> (gp (gci $FD).PSPath).Name
    >>
    AccountPictures
    Roaming Tiles
    Common Programs
    PublicAccountPictures
    GameTasks
    UserProfiles
    MyComputerFolder
    SearchHistoryFolder
    Local Pictures
    SyncSetupFolder
    DpapiKeys
    Retail Demo
    Favorites
    My Video
    SearchHomeFolder
    RecordedTVLibrary
    System
    Libraries
    ThisDeviceFolder
    AppsFolder
    MusicLibrary
    CommonVideo
    OneDriveDocuments
    SyncResultsFolder
    LocalizedResourcesDir
    Cookies
    CameraRollLibrary
    Original Images
    Recorded Calls
    3D Objects
    CommonMusic
    OneDrivePictures
    My Pictures
    Cache
    Local Videos
    Downloads
    SavedPictures
    CommonDownloads
    AppData
    SyncCenterFolder
    PublicLibraries
    VideosLibrary
    My Music
    ConflictFolder
    SavedGames
    InternetFolder
    HomeGroupFolder
    Quick Launch
    SystemCertificates
    AppDataProgramData
    Contacts
    UserProgramFiles
    Device Metadata Store
    Profile
    Start Menu
    Common AppData
    ProgramFilesCommonX64
    PhotoAlbums
    ProgramFilesX64
    ConnectionsFolder
    Administrative Tools
    ThisPCDesktopFolder
    OneDriveCameraRoll
    PrintersFolder
    AppMods
    DocumentsLibrary
    AppDataDocuments
    ProgramFilesX86
    AppDataFavorites
    Searches
    Local Downloads
    SearchTemplatesFolder
    Common Startup
    ControlPanelFolder
    SendTo
    ResourceDir
    ProgramFiles
    CredentialManager
    PrintHood
    MAPIFolder
    HomeGroupCurrentUserFolder
    User Pinned
    CD Burning
    Local Music
    UsersLibrariesFolder
    AppUpdatesFolder
    Application Shortcuts
    Common Start Menu
    Common Start Menu Places
    LocalAppDataLow
    OneDrive
    Templates
    Programs
    PicturesLibrary
    Roamed Tile Images
    Camera Roll
    Recent
    AppDataDesktop
    Desktop
    CommonPictures
    RecycleBinFolder
    Screenshots
    CryptoKeys
    Common Templates
    Startup
    ImplicitAppShortcuts
    UserProgramFilesCommon
    Links
    OEM Links
    OneDriveMusic
    Common Desktop
    NetHood
    Ringtones
    Common Administrative Tools
    NetworkPlacesFolder
    SystemX86
    History
    Development Files
    AddNewProgramsFolder
    Playlists
    ProgramFilesCommonX86
    PublicGameTasks
    ChangeRemoveProgramsFolder
    Public
    SavedPicturesLibrary
    CommonRingtones
    Common Documents
    Captures
    CSCFolder
    Local AppData
    Windows
    UsersFilesFolder
    Local Documents
    ProgramFilesCommon
    Fonts
    Personal
    

    然后,有一些 CLSID 与Shell:格式中的命令一起使用Shell:::{<GUID>}。HKCR\CLSID 的任何具有子项的ShellFolder子项都可能是可疑的,因此我们可以找到这些:

    New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | out-null
    gci 'HKCR:\CLSID' | ? { $_.GetSubkeyNames() -contains 'ShellFolder' } | select PSChildName, @{N = 'Default'; E = {(gp $_.PSPath).'(Default)'}}
    
    PS C:\...\keith>gci 'HKCR:\CLSID' | ? { $_.GetSubkeyNames() -contains 'ShellFolder' } | select PSChildName, @{N = 'Default'; E = {(gp $_.PSPath).'(Default)'}}
    
    PSChildName                            Default
    -----------                            -------
    {00020D75-0000-0000-C000-000000000046}
    {00021400-0000-0000-C000-000000000046} Desktop
    {018D5C66-4533-4307-9B53-224DE2ED1FE6} OneDrive
    {025A5937-A6BE-4686-A844-36FE4BEC8B6D} Power Options
    {031E4825-7B94-4dc3-B131-E946B44C8DD5} UsersLibraries
    {04731B67-D933-450a-90E6-4ACD2E9408FE} CLSID_SearchFolder
    {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} Taskbar
    {088e3905-0323-4b02-9826-5d99428e115f}
    {0AFACED1-E828-11D1-9187-B532F1E9575D} Folder Shortcut
    {0c39a5cf-1a7a-40c8-ba74-8900e6df5fcd}
    {0CD7A5C0-9F37-11CE-AE65-08002B2E1262} Cabinet Shell Folder
    {0DB7E03F-FC29-4DC6-9020-FF41B59E513A}
    {0DF44EAA-FF21-4412-828E-260A8728E7F1} Taskbar
    {0E5AAE11-A475-4c5b-AB00-C66DE400274E} Shell File System Folder
    {11016101-E366-4D22-BC06-4ADA335C892B} IE History and Feeds Shell Data Source for Windows Search
    {1206F5F1-0569-412C-8FEC-3204630DFB70} Credential Manager
    {15eae92e-f17a-4431-9f28-805e482dafd4} Install New Programs
    {17cd9488-1228-4b2f-88ce-4298e93e0966} Set User Defaults
    {1bef2128-2f96-4500-ba7c-098dc0049cb2} CLSID_DBFolderBoth
    {1CF1260C-4DD0-4ebb-811F-33C572699FDE}
    {1D2680C9-0E2A-469d-B787-065558BC7D43} Fusion Cache
    {1f3427c8-5c10-4210-aa03-2ee45287d668} User Pinned
    {1FA9085F-25A2-489B-85D4-86326EEDCD87} Manage Wireless Networks
    {208D2C60-3AEA-1069-A2D7-08002B30309D} Network
    {20D04FE0-3AEA-1069-A2D8-08002B30309D} This PC
    {21EC2020-3AEA-1069-A2DD-08002B30309D} All Control Panel Items
    {2227A280-3AEA-1069-A2DE-08002B30309D} Printers
    {22877a6d-37a1-461a-91b0-dbda5aaebc99} Recent Places Folder
    ...
    

    但其中许多是另一个项的子项,例如控制面板项。以下是获取这些列表的方法:

    $Shell = New-Object -ComObject shell.application
    $DT = $Shell.Namespace(0)
    
    Function Unfold ($oFolder) {
    $oFolder.Items() | ?{ ($_.IsFolder -eq $True) -and ($_.Name -notLike 'Fonts') } | ForEach{
    UnFold $_.GetFolder
    }
    $_.GetFolder.Items() | select Name, Path
    }
    
    $DT.Items() | ?{($_.IsFolder -eq $True) -and
            ($_.Name -match 'Control Panel')} | % {
                Unfold $_.GetFolder
    } | select name, path -unique | Sort Path | Out-Gridview
    

    网格视图

    • 6
  2. John
    2020-02-27T15:04:21+08:002020-02-27T15:04:21+08:00

    我见过的最好的是来自Nirsoft.net的 Shell View Menu(64 位和 32 位) 。有很多条目,所以要准备好。但是这个软件非常适合这个。

    我使用了许多 Nirsoft 工具,因为它们很好。

    这是Shell View 的屏幕截图。没有显示的是 CLSID 字段,但是你想要的就在这里

    在此处输入图像描述

    • 1
  3. Tonny
    2020-02-27T15:19:33+08:002020-02-27T15:19:33+08:00

    您正在寻找的是IKnownFolder接口(Shell32.dll 的一部分)。
    这提供了所有工具来获取有关这些特殊文件夹的信息。
    Windows SDK 有几个示例说明如何使用它。

    各种版本的 Windows(自 Vista 以来)处理此信息的方式存在细微差别,但自 Vista 以来的所有 Windows 版本都支持 IKnownFolders 界面,并为您提供一致的界面,因此您无需处理差异你自己。

    • 0
  4. user1292580
    2021-04-21T22:01:38+08:002021-04-21T22:01:38+08:00
    @For /f "tokens=1* delims=" %%A in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions /f name /v name /s ^| findstr /c:"Name" ^| Sort') Do @Echo %%A
    pause
    

    将列出您可以使用Start-Runshell:中的命令打开的所有文件夹。

    例如

    Shell:User Pinned
    

    @For /f "tokens=1* delims=" %%A in ('reg query HKCR /f "URL:*" /s /d ^| findstr /c:"URL:" ^| findstr /v /c:"URL: " ^| Sort') Do @Echo %%A %%B
    pause
    

    将列出 Windows 的应用商店应用程序(加上 Internet 协议)以及如何启动它们。

    搜索注册表需要一分钟左右的时间,并且在对其进行排序时,无法显示进度。

    开始绘制 3D

    ms-paint://
    
    • 0

相关问题

  • Python 的“pass”参数的批处理等价物是什么?

  • 禁用后无法启用 Microsoft Print to PDF

  • 我可以让这个 PowerShell 脚本接受逗号吗?

  • 在 Windows 上与 Docker 守护进程通信

  • 资源管理器侧面板中的桌面外壳快捷方式

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve