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?

I say Reinstate Monica
  • 25,487
  • 19
  • 95
  • 131
achintha
  • 45
  • 7
  • According to https://www.winhelponline.com/xp/sendtofix.htm, it could be a problem with some registry entries that manage the SendTo functionality. They have a script that might fix it. (It's for Windows XP, but it might still apply.) – Doug Deden Jan 10 '19 at 15:40
  • I have checked that, but it shows a message when I executed the script that it only works in windows 7 and below :/ – achintha Jan 10 '19 at 16:05
  • The code that gives you that message is checking if the OS is XP, Vista, or 7, and choosing a directory structure accordingly. (I suspect that when they wrote it, Window 8 and 10 did not yet exist.) You can modify the script to have it treat Windows 10 the same as Windows 7 -- the directory in question is the same for 10 as it is for 7. – Doug Deden Jan 10 '19 at 16:10
  • ah, that fixed it, I've changed the script and executed. Everything back on track. Thank you Doug :) – achintha Jan 10 '19 at 16:29
  • That's great news. I'll write it up as an answer. – Doug Deden Jan 10 '19 at 16:32

3 Answers3

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
  • 1,989
  • 1
  • 10
  • 16
  • I think it's better to have details about how to save the script(i mean extension) and how to execute. – achintha Jan 10 '19 at 17:03
  • 1
    @achintha Feel free to edit those details into the answer. That's encouraged on Stack Exchange sites. – I say Reinstate Monica Jan 10 '19 at 17:12
  • 1
    +1 worked for me in Windows 10 v1909. Just a note that you have to run wscript from an elevated command prompt. If you don't, it doesn't throw any errors, but it doesn't work. – Martin Jan 07 '20 at 09:13
  • That's great to hear, @Martin. I've added that note to the answer. – Doug Deden Jan 07 '20 at 23:58
  • @DougDeden does your solution address this issue too? https://superuser.com/questions/1100973/can-sub-folders-be-created-on-the-explorer-context-send-to-menu – Ben Jul 26 '22 at 16:46
  • 1
    @Ben I don't think so. This script only fixes the existing Send To stuff. – Doug Deden Jul 26 '22 at 18:55
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
  • 8,704
  • 1
  • 15
  • 28
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
  • 103
  • 1
  • 6