“发送到”菜单不显示“发送到”文件夹中的所有条目

ach*_*tha 4 send-to windows-10

发送到菜单的屏幕截图

如上面的屏幕截图所示,我在使用打开的发送到菜单文件夹中拥有所有默认条目以及我自己手动添加的一些条目shell:SendTo

但并非所有条目都显示在“发送到”菜单中。

如何解决这个问题?

Dou*_*den 5

根据https://winhelponline.com/xp/sendtofix.htm,这可能是管理 SendTo 功能的某些注册表项存在问题。他们有一个应该修复它的脚本。

它最初适用于 Windows XP、Vista 和 7,因此我做了一些细微的更改以使其适用于 Windows 10。

将以下脚本保存到文件fixsendto.vbs,并使用命令提示符执行它wscript.exe "C:\Scripts\fixsendto.vbs"。相应地更改文件路径。您可能必须wscript从管理员级别的命令提示符运行。

'-----------------------------------------------------------------
'Compatibility : Windows XP, Windows Vista and Windows 7 (added 8 and 10)
'Author        : Ramesh Srinivasan - Microsoft MVP (Windows Shell)
'Created on    : February 19, 2005
'Revised on    : November 01, 2010
'Description   : Fixes the Send To menu (missing all the shortcuts)
'Homepage      : http://windowsxp.mvps.org
'More Info     : http://windowsxp.mvps.org/sendtofix.htm
'Requirement   : Needs Administrative privileges
'-----------------------------------------------------------------

Set WshShell = CreateObject("WScript.Shell")
strComputer = "."
Set objWMIService = GetObject _
    ("winmgmts:\\" & strComputer & "\root\cimv2")

'Determine OS version
Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
    if instr(objOperatingSystem.Caption,"Vista") Or instr(objOperatingSystem.Caption,"Windows 7") Or instr(objOperatingSystem.Caption,"Windows 8") Or instr(objOperatingSystem.Caption,"Windows 10") then
        strSendTo = "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo"
    elseif instr(objOperatingSystem.Caption,"XP") Then  
        strSendTo = "%USERPROFILE%\SendTo"
    else
        MsgBox "This script runs in Windows 10/8/7/Vista/XP systems only"
        wscript.Quit
    end if
Next

USFolderPath = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
On Error Resume Next
WshShell.RegWrite "HKCR\exefile\shellex\DropHandler\", "{86C86720-42A0-1069-A2E8-08002B30309D}", "REG_SZ"
WshShell.RegWrite "HKCR\lnkfile\shellex\DropHandler\", "{00021401-0000-0000-C000-000000000046}", "REG_SZ"
WshShell.RegWrite USFolderPath & "\SendTo", strSendTo, "REG_EXPAND_SZ"
Wshshell.RUN ("regsvr32.exe shell32.dll /i /s")

'Get curr. user name
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")
For Each objItem in colItems
    strCurrentUserName = objItem.UserName
Next

'Restart user shell
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'Explorer.exe'")
For Each objProcess in colProcessList
    colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
    If strUserDomain & "\" & strNameOfUser = strCurrentUserName then
        objProcess.Terminate()
    End If
Next

MsgUser = Msgbox ("Fixed the Send To menu.", 4160, "'Send To' menu fix for Windows 10/8/7/Vista/XP.")
Set WshShell = Nothing
Run Code Online (Sandbox Code Playgroud)