4

Screenshot of send to menu

As in the screenshot above I have all the default entries along with some added by myself manually in the send to menu folder which I opened using shell:SendTo.

But not all the entries are showing up in the send to menu.

How to fix this?

4 Answers4

5

According to https://winhelponline.com/xp/sendtofix.htm, it could be a problem with some registry entries that manage the SendTo functionality. They have a script that should fix it.

It was originally for Windows XP, Vista, and 7, so I've made a slight change to get it to work for Windows 10.

Save the following script to a file fixsendto.vbs, and execute it using command prompt wscript.exe "C:\Scripts\fixsendto.vbs". Change the file path accordingly. You'll probably have to run wscript from an admin-level command prompt.

'-----------------------------------------------------------------
'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
Doug Deden
  • 2,204
  • 1
  • 12
  • 16
1

Here's the PowerShell equivalent of Ramesh's code (without version checking). This can be pasted into a PowerShell Admin Console or saved as a .ps1 file.

New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | out-null
$Splat = @{
   'Path'  = 'HKCR:\exefile\shellex\DropHandler\'
   'Value' = '{86C86720-42A0-1069-A2E8-08002B30309D}'
}
Set-Item @Splat

$Splat = @{
   'Path'  = 'HKCR:\lnkfile\shellex\DropHandler\'
   'Value' = '{00021401-0000-0000-C000-000000000046}'
}
Set-Item @Splat

$Splat = @{
   'Path'  = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders'
   'Name'  = 'SendTo'   
   'Value' = '%USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo'
   'Type'  = 'ExpandString'
}
Set-ItemProperty @Splat

start-Process -FilePath regsvr32.exe -ArgumentList shell32.dll, /i, /s

Get-Process Explorer | Stop-Process
Keith Miller
  • 10,694
  • 1
  • 20
  • 35
1

Note that all other answers (as of 27th Dec 2021) explains a fix for a issue where shortcuts is not recognized by the SendTo menu. It does not solve the "issue" (or lacking Windows feature) of adding files directly to the shell:SendTo folder.

You see, only certain file extensions will be recognized by the SendTo menu if you add them directly in shell:SendTo. This includes *.cmd, *.bat and *.vbs. Most other files however, will simply not show up in the "Send to" menu this way.

One way to make it work is to add a shortcut referencing the file and place this shortcut in shell:SendTo. The shortcut must include the path to executable associated with that file extension.

As an example does the shortcut need to include the path to AutoHotkey.exe for *.ahk file shortcuts to work (even though ahk files is associated with AutoHotkey.exe elsewhere in Windows):

"C:\Program Files\AutoHotkey\AutoHotkey.exe" D:\TEMP\test.ahk

Shortcut with reference to both executable and file

Siljuberg
  • 151
0

I had similar issues that were solved by this thread, so I thought I would detail what my symptoms were, thinking that people searching for those issues will be directed to this thread.

The symptoms:

  • one day I noticed that my SendTo context menu had lost most of its entries. I inspected the SendTo folder to check if the corresponding shortcuts have gone.
  • I navigate down to C:\Users\User\AppData\Roaming\Microsoft\Windows\ and double-click the SendTo folder. Explorer hangs. Not for 10 seconds but forever.
  • I open a command prompt and cd to the folder. No problems, and I can get a dir of the SendTo folder. All of the missing shortcuts are there, they just don't all make it to the context menu. The shortcuts in the context menu that are displayed are the entries in the folder (sorted alphabetically) up to but not including one I had recently added to send a file to a "Print To PDF" batch file. I nuked that one plus a couple of other suspect looking ones, and File Explorer no longer hangs in the folder. I still have the truncated context menu however.
  • I then tried the Powershell script in this thread. Still no joy. Then I tried the VBScript thread, even though they are presumably functionally identical.
  • Bingo! All working again.

My suspicion is that the damage was caused by the addition of the SendTo item to print a PDF to File, or possibly an update of FoxIt Reader (something I did around the same time).

I'm still not 100% sorted. Printing is broken (Printing from Chrome hangs on the preview screen - the only exit is to kill the Chrome task), as is opening PDF's with Foxit. Acrobat reader is OK (the document opens and displays, but we can't print).

I hope this helps someone.

rossmcm
  • 1,656