Shellexecute error 2

I'm developing in .NET 3.5 using C# on a Win 10 x64 system, making a call to ShellExecute. The call returns a 2 (ERROR_FILE_NOT_FOUND) even though the item passed in is a folder and it definitely exists.
  • Remove From My Forums
  • Question

  • I’m developing in .NET 3.5 using C# on a Win 10 x64 system, making a call to ShellExecute. The call returns a 2 (ERROR_FILE_NOT_FOUND) even though the item passed in is a folder and it definitely exists.

    Here’s the code:

    // Program.cs:
    
    namespace TestQuickAccessFavorites
    {
        class Program
        {
            static void Main( string[] args )
            {
                QuickAccessFavorites qaf = new QuickAccessFavorites();
            }
        }
    }
    
    
    // TestQuickAccessFavorites.cs:
    
    using System;
    using System.Runtime.InteropServices;
    using Microsoft.Win32;
    
    namespace TestQuickAccessFavorites
    {
    
        public class QuickAccessFavorites
        {
            // Performs an operation on a specified file.
            [DllImport( "shell32.dll" )]
            public static extern IntPtr ShellExecute(
            IntPtr hwnd,
            [MarshalAs( UnmanagedType.LPTStr )]
            String lpOperation,
            [MarshalAs( UnmanagedType.LPTStr )]
            String lpFile,
            [MarshalAs( UnmanagedType.LPTStr )]
            String lpParameters,
            [MarshalAs( UnmanagedType.LPTStr )]
            String lpDirectory,
            Int32 nShowCmd );
    
    
            public enum ShowCommands : int
            {
                SW_HIDE            = 0,
                SW_SHOWNORMAL      = 1,
                SW_NORMAL          = 1,
                SW_SHOWMINIMIZED   = 2,
                SW_SHOWMAXIMIZED   = 3,
                SW_MAXIMIZE        = 3,
                SW_SHOWNOACTIVATE  = 4,
                SW_SHOW            = 5,
                SW_MINIMIZE        = 6,
                SW_SHOWMINNOACTIVE = 7,
                SW_SHOWNA          = 8,
                SW_RESTORE         = 9,
                SW_SHOWDEFAULT     = 10,
                SW_FORCEMINIMIZE   = 11,
                SW_MAX             = 11
            }
    
    
            public QuickAccessFavorites()
            {
                UpdateFavorites();
            }
    
    
            private void UpdateFavorites()
            {
                // ShellExecute returns
                // Value greater than 32 if successful.
                // 0 - Out of memory.
                // 2 - ERROR_FILE_NOT_FOUND.
                // 3 - ERROR_PATH_NOT_FOUND.
                // 11 - ERROR_BAD_FORMAT
                // 5 - SE_ERR_ACCESSDENIED
                // 27 - SE_ERR_ASSOCINCOMPLETE
                // 30 - SE_ERR_DDEBUSY
                // 29 - SE_ERR_DDEFAIL
                // 28 - SE_ERR_DDETIMEOUT
                // SE_ERR_INF
                // 31 - SE_ERR_NOASSOC
                // SE_ERR_OOM
                // SE_ERR_PNF
                // SE_ERR_SHARE
    
                int iRetVal;
                iRetVal = (int)ShellExecute(
                    IntPtr.Zero,
                    "pintohome",
                    @"C:UsersHaggaPreVeil-haggard@msn.com",
                    "",
                    "",
                    (int)ShowCommands.SW_HIDE );
            }
        }
    }
    

    What is wrong with the simple code?


    Richard Lewis Haggard

Answers

  • Ah. That was unexpected. Change the SW_HIDE to SW_SHOW and it works just fine.

     iRetVal =
    (int)ShellExecute(
                   
    IntPtr.Zero,
                   
    «pintohome»,
                   
    @«C:UsersHaggaPreVeil-haggard@msn.com»,
                   
    «»,
                   
    «»,
                   
    (int)ShowCommands.SW_SHOW
    );


    Richard Lewis Haggard

    • Marked as answer by

      Friday, March 9, 2018 1:52 PM

For those ending up with duplicate entries after following John Swaringen’s or Laurie Stearn’s, like Aske B, this is because these answers are incomplete and don’t deal with the removal of the default entry. If you compare them to Steve’s answer, they pick up where he says «Now we re-create it» and you still have to do the stuff he says before that to remove the default entry. You don’t have to reinstall N++, though you can if you feel more comfortable doing that. Unfortunately, while a .reg file could be created to remove the default entry automatically, to make it easier for those who prefer not to do manual registry edits, it’s not likely to work well, since it’s probably in a different location for different people. Mine, for example, was in [HKEY_CLASSES_ROOTCLSID{B298D29A-A6ED-11DE-BA8C-A68E55D89593}].

Another tidbit: If you want to change the location of the entry in the right-click menu, whether to make it be right under the top/default «Open» or «Open with» entry» (and keep in mind it may be when you create it but that may change later if/when another program creates a new entry, so you may want to just do this now to prevent that from happening later) or to move it down closer to the default entry’s position (toward the bottom of the top section), you do this via the key name. For example, keys in this order will result in context menu entries in the same order:

[HKEY_CLASSES_ROOT*shell!EditWithNotepad]
[HKEY_CLASSES_ROOT*shellAEditWithNotepad]
[HKEY_CLASSES_ROOT*shellAnotherProgram]
[HKEY_CLASSES_ROOT*shellEditWithNotepad]
[HKEY_CLASSES_ROOT*shellOpenWithNotepad]
[HKEY_CLASSES_ROOT*shellSomeOtherProgram]
[HKEY_CLASSES_ROOT*shellZOpenWithNotepad]

Keep in mind these are merely the key names, and they have no impact on the entries’ text, only their positions. The actual text of the entry is determined by the «(Default)» name provided in the right pane. And, of course, you can use this to change the order of the other entries as well (top section only, though I’m sure the other sections can be tweaked elsewhere in the registry, plus I believe there are programs specifically for modifying the context menu.

@chaosblad3

Description of the Issue

I wanted Notepad++ to always «run as administrator», so I found the .exe and checked that option on the compatibility tab, but now whenever I try to open a file with the right-click > Edit with Notepad++ option I get the error message «Notepad++ Extension: Error», «ShellExecute Failed (2): Is this command correct?» with the path to the Notepad++ exe on the next line followed by the path to the file I was trying to open…

Steps to Reproduce the Issue

  1. Check the «Run this program as an administrator» option in the exe properties menu
  2. try to open any file using the «Edit with Notepad++» option in the windows right-click context menu.

Expected Behavior

The file opens, with notepad++ in administrator mode

Actual Behavior

I get the following and the program does not open.
screenshot of error

Debug Information

Notepad++ v7.5.6 (32-bit)
Build time : Mar 19 2018 — 00:26:59
Path : C:Program Files (x86)Notepad++notepad++.exe
Admin mode : ON
Local Conf mode : OFF
OS : Windows 10 (64-bit)
Plugins : DSpellCheck.dll mimeTools.dll NppConverter.dll NppExport.dll PluginManager.dll

MythodeaLoL, collinsauve, aperiooculus, EmmanuelPliez, Denominator13, ashleedawg, interphx, Mindbulletz, rmirabelle, BraveSail, and 2 more reacted with thumbs up emoji
dvdvideo1234 reacted with hooray emoji
dvdvideo1234 reacted with heart emoji
dvdvideo1234 reacted with rocket emoji

@direc85

You are running a 32-bit Notepad++ on 64-bit operating system. Does installing 64-bit version make that possible?

I use only Send To menu (you have to add it manually) and a quick test result was positive: I ticked notepad++.exe to be run as administrator (current user only) and tried to edit a file. I got a UAC prompt, and Notepad++ title bar ends with [Administrator].

@chaosblad3

I didn’t realize I had installed the 32bit version, but regardless installing the 64bit version did not fix the issue.

I appreciate that your «Send To» method might work fine for you, but like you said that requires adding manually whereas the «Edit with NotePad++» function is there by default and that’s the method that I made this report about, suggesting an alternate method is certainly appreciated but it doesn’t change the fact that the other method is still broken.

@go361

@direc85

@go361 That result in Notepad++ being run not as administrator, so it is the opposite of the goal here.

I created a workaround using registry modifications and a VBScript file to actually trigger the UAC prompt. I get a «native» user experience with this one, but nevetrheless it’s still a workaround.

I have a 64-bit Notepad++ installed in a 64-bit Windows, so the paths may need adjustment. The .vbs file must be placed in the Notepad++ installation directory, and for me at least it survives the update process. You might want to remove and re-install Notepad++ without shell extension ticked to avoid duplication in the shell context menu.

Please review the .reg and .vbs files before using them. I’m not responsible if you lose your data.

notepad-runas.zip

@Drauku

The solution was posted over at SuperUser here: https://superuser.com/a/1269546

Save the below snippets as .reg files and execute them. The first two add context menu entries, the third removes the original (non-working with admin priv) context menu entry.

The first is for the Admin menu item only:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*shellOpenWithNotepad]
@="Edit with &N++ [Admin]"
"icon"="C:\Program Files (x86)\Notepad++\Notepad++.exe"

[HKEY_CLASSES_ROOT*shellOpenWithNotepadCommand]
@=""C:\Program Files (x86)\Notepad++\Notepad++.exe" "%1""
[HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{B298D29A-A6ED-11DE-BA8C-A68E55D89593}Settings]
"ShowIcon"=dword:00000000

The second is for both items on the menu:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*shellOpenWithNotepad]
@="Edit with &N++ [Admin]"
"icon"="C:\Program Files (x86)\Notepad++\Notepad++.exe"

[HKEY_CLASSES_ROOT*shellOpenWithNotepadCommand]
@=""C:\Program Files (x86)\Notepad++\Notepad++.exe" "%1""
[HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{B298D29A-A6ED-11DE-BA8C-A68E55D89593}Settings]
"ShowIcon"=dword:00000001

The third is to remove the Admin item entirely:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*shellOpenWithNotepad]
"icon"=-

[HKEY_CLASSES_ROOT*shellOpenWithNotepadCommand]
@=""

[-HKEY_CLASSES_ROOT*shellOpenWithNotepadCommand]

[-HKEY_CLASSES_ROOT*shellOpenWithNotepad]

[HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{B298D29A-A6ED-11DE-BA8C-A68E55D89593}Settings]
"ShowIcon"=dword:00000001

@collinsauve

Thanks @Drauku, that worked for me. Anyone know how to get rid of the original «Edit with Notepad++» entry?

image

@Drauku

Thanks @Drauku, that worked for me. Anyone know how to get rid of the original «Edit with Notepad++» entry?

You should be able to use the third code-snippet I listed previously to do that.

@collinsauve

You should be able to use the third code-snippet I listed previously to do that.

That removes the new (working) «Edit with N++ [Admin]» option. I’m looking to remove the old (broken) «Edit with Notepad++» option.

@collinsauve

I was able to fix this for myself by removing the ComputerHKEY_CLASSES_ROOT*shellexContextMenuHandlersANotepad++64 key.

@darkdex52

This is still an open issue in Dec 2019 btw. Following the steps listed here fixed my problem, but being able to run Notepad++ with admin priviledges from context menu should be a default from the install, not a regedit tweak.

@sohosynergy

The solution @collinsauve provided was the simplest and worked like a charm for Notepad++ v7.8.4 64 bit on Windows 10 64bit.

I was able to fix this for myself by removing the ComputerHKEY_CLASSES_ROOT*shellexContextMenuHandlersANotepad++64 key.

@TroniPM

This was referenced

Jul 28, 2021

@avanlex

@go361, thanks

Perhaps you can solve your problem using the method in the Youtube Video.
HOW TO FIX ShellExecute failed 2 / EXTENTION ERROR in notepad++

No need to watch the video
Steps:
1. First Go To Desktop (Or To Start Menu In My Case)
2. Then Find Notepad++ Icon.
3. Then Click Right Mouse Button.
4. Now Click On Properties.
5. Now Click Compatibility.
6. Now Disable/Untick The «Run This Program As An Administrator» Option .
7. Now Click «Apply» And Then Click «Ok«.

We all know this error when we right click a file and choose “Edit with Notepad++”:
ShellExecute Failed (2): Is this command correct? “C:Program Files (x86)Notepad++Notepad++.exe” “Path Of File Your Want To OpenFileName.txt”

This is caused because Notepad++ is launched with administrator privileges, so the solution was to navigate to Notepad++ installation path then right click on “Notepad++.exe” and uncheck “Run the program as administrator” as stated here:
https://community.notepad-plus-plus.org/topic/14750/shellexecute-failed-2-is-this-command-correct

But I found a solution and it worked for me where you can launch Notepad++ as admin and still be able to use that option.

The solution is taken from here:
http://timourrashed.com/how-to-fix-shellexecute/
(A snapshot of the page here, just in case: http://web.archive.org/web/20220423043635/http://timourrashed.com/how-to-fix-shellexecute/)

Solution is to locate and delete the registry key that is responsible for integrating “Edit with Notepad++” option in the Right Click Menu and create another one in “HKEY_CLASSES_ROOT*shell” to be able to use the option while running Notepad++ as administrator.

ℹ️ Solution Steps:
⚠️⚠️ It’s very important to read all steps before doing anything because I reproduced the first fours steps with my way to locate the key we want to delete.

⚠️⚠️ I’m not responsible for any damage, you do it at your own risk.

  1. Open “Registry” (just type in windows search “registry” without quotes)
  2. In the right panel, right click on HKEY_CLASSES_ROOT then select “Find…”
  3. Search for Edit with Notepad++ and if you didn’t get a result, search for Edit with &Notepadd++

q4f5OSDMsx1.png
4. You should see the search results as in below screenshot, and delete the whole key: (Screenshot is from solution source)
LEAMx4s67K.png
⚠️⚠️ Backup Warning: Before you delete anything, you should backup the registry key just in case of errors afterwards, and this can be done by right click on the key you want to backup (the folder) then click “Export”
So that you can double click the backed-up registry file and then hit “Merge” to restore the key if you want to revert changes.

(You can backup the entire registry too, refer to below article on how to backup)
How to Backup and Restore the Windows Registry

ℹ️⚠️ I did the last fours steps but didn’t receive search results with any of those two values, looks like this was in older versions of Notepad++.
So what I did is reproduce the fours steps:

  1. Since the built-in search in registry is too slow, I downloaded “RegScanner v2.65” from “Nirsoft” to search for the key, it was faster.
    http://www.nirsoft.net/utils/regscanner.html

  2. Opened it and started a registry scan as in screenshot, I searched instead with notepad++ to locate the key.
    I0HC7EKLRh.png

  3. After completed the search, I located the key by comparing the “data” value column with the screenshot from the solution source then opened it in Registry:
    image830.png
    The data value is {B298D29A-A6ED-11DE-BA8C-A68E55D89593} which if you searched with, you should be able to locate it instantly instead of searching with “notepad++”

  4. Now the Registry will be opened and you can delete the key, and you should see that “Edit with Notepad++” option from is deleted from right click menu.
    6hgeapNpXi.png
    ⚠️⚠️Please refer to the “Backup Warning” up before you delete anything.


Now we will continue the rest of solution which is creating the replacement key:

  1. In Registry go to HKEY_CLASSES_ROOT*shell and right click on “shell” key then select “New > Key” to create new key, you will name it OpenWithNotepad and create a sub-key under that called command as seen below:
    cwvR0xuDbb.png (Screenshot is from the original solution page)

  2. Inside the OpenWithNotepad key, set the (Default) string variable to Edit with Notepad ++
    9K85UApqz1.png

  3. In the same key OpenWithNotepad , create a new string variable called icon and set the value to the full path of “notepad++.exe”. In my case, I had to set it to C:Program FilesNotepad++notepad++.exe where the program is installed.
    epC3UZoJhV.png
    okxdHLGk06.png

  4. Now go to command key and set the default string as "full path of notepad++.exe" "%1" as we did in step 7
    U2S85HfLKb.png

  5. That’s it. If you set Notepad++ to run as administraotr, try now to use “Edit with Notepad++” option and it should work.

Notes:

  1. My Notepad++ version is 8.3.3, and it’s not portable, I installed it on my Windows 10.
  2. I don’t know what will happen when new update releases for Notepad++, maybe we will reproduce same steps or delete only the responsible key? I really don’t know!
  3. Credits goes to the source I took the solution from and to the other sources if he copied it:
    http://timourrashed.com/how-to-fix-shellexecute/

Как исправить сообщение об ошибке «Shellexecuteex failed code 2» 1

В последнее время много Windows 10 пользователей сообщили, что они получают «код ошибки shellexecuteex 2» при установке файлов .exe. С Windows имеет хорошую репутацию в ущерб пользовательскому опыту, подобные ошибки теперь считаются «нормальными». Для Windows пользователи, переустановка Windows операционная система – обычное дело, и цикл установки и форматирования операционной системы, кажется, никогда не заканчивается.

После получения нескольких сообщений от наших посетителей относительно сообщения об ошибке «shellexecuteex failed code 2» мы исследовали и обнаружили, что ошибка возникает из-за некоторых ошибок. Ошибка исправлена ​​в последней сборке Windows ОС, но проблема в том, что пользователи, использующие пиратскую версию Windows ОС не получит обновление.

Итак, для этих пользователей мы собираемся обсудить несколько лучших методов, которые могут в кратчайшие сроки исправить «ошибочный код shellexecuteex 2». Поскольку основная причина сообщения об ошибке еще не найдена, пользователям необходимо следовать всем методам, чтобы исправить сообщение об ошибке shellexecuteex failed code 2.

1. Просканируйте свой компьютер с помощью мощного инструмента безопасности.

Сканируйте свой компьютер с помощью антивируса

Что ж, это одна из первых вещей, которые вам нужно сделать при работе с ошибками. Стоит отметить, что вирусы, вредоносные программы, шпионское ПО, рекламное ПО и т. Д. Иногда играют с системными файлами, что может вызвать различные ошибки. Итак, прежде чем вы решите использовать другие методы, обязательно просканируйте свой компьютер. Даже если полное сканирование системы не поможет исправить сообщение об ошибке, оно устранит угрозы безопасности. Поэтому обязательно просканируйте свою систему с помощью инструментов безопасности, чтобы исправить сообщение об ошибке «shellexecuteex failed code 2».

2. Попробуйте запустить в режиме администратора.

Попробуйте запустить в режиме администратора

Что ж, если вы получаете сообщение об ошибке при установке программ, вы можете попробовать запустить установщик с правами администратора. Если с разрешениями что-то не так, то запуск установщика в режиме администратора, вероятно, устранит сообщение об ошибке «shellexecuteex failed code 2». Устанавливать приложения в режиме администратора очень просто; пользователям необходимо щелкнуть установщик правой кнопкой мыши и выбрать параметр «Запуск от имени администратора». Некоторые приложения также требуют прав администратора для установки, поэтому, если это вызывает ошибку, она будет исправлена.

3. Повторно загрузите установщик и установите его.

Повторно загрузите установщик и установите

Если вы получаете сообщение об ошибке «shellexecuteex failed code 2» при установке любого приложения или игры, которые вы только что загрузили, мы рекомендуем вам повторно загрузить установщик. В установочном файле может быть какая-то ошибка, которая вызывает сообщение об ошибке «shellexecuteex failed code 2». Таким образом, в таком сценарии пользователям необходимо удалить приложение или его следы и установить его снова. Кроме того, не забудьте запустить установщик в «режиме администратора».

4. Верните системные звуки к значениям по умолчанию.

Что ж, некоторые пользователи сообщили, что возвращение системных звуков к значениям по умолчанию устранило сообщение об ошибке. Проблема обычно возникает, когда модуль, который вы пытаетесь установить или использовать, не может правильно обрабатывать системные звуки. Итак, если это была проблема, вам нужно вернуть системные звуки по умолчанию, чтобы исправить сообщение об ошибке.

Шаг 1. Прежде всего, нажмите Windows Клавиша + R , чтобы открыть диалоговое окно RUN.

Открыть диалоговое окно RUN

Шаг 2. В диалоговом окне ЗАПУСК введите mmsys.cpl и нажмите Enter.

Введите mmsys.cpl и нажмите Enter.

Шаг 3. Далее вам нужно выбрать ‘Звуки’ вкладка, а затем выберите ‘Windows дефолт’ под Звуковой схемой.

Перейдите на вкладку “Звук” и выберите “Windows по умолчанию ‘в разделе Звуковая схема

Вот и все! Вы сделали. Теперь просто перезагрузите компьютер, чтобы исправить сообщение об ошибке shellexecuteex failed от Windows 10.

5. Запустите команду SFC.

Что ж, сообщение об ошибке «shellexecuteex failed code 2» также возникает из-за поврежденных системных файлов. Итак, если вы получаете сообщение об ошибке из-за поврежденных системных файлов, вам необходимо использовать команду SFC. Команда SFC на Windows скорее всего, исправит все поврежденные, отсутствующие или измененные системные файлы. Вот как использовать команду SFC, чтобы исправить сообщение об ошибке shellexecuteex failed code 2.

Шаг 1. Прежде всего, введите CMD в меню поиска и щелкните правой кнопкой мыши командную строку. В контекстном меню выберите «Командная строка (администратор)».

Использование команды SFC

Шаг 2. Теперь в окне командной строки введите команду sfc / scannnow и нажмите клавишу ВВОД.

Использование команды SFC

Шаг 3. Теперь подождите несколько секунд, пока сканирование не завершится. Если вы получите сообщение об ошибке ‘Windows Защита ресурсов обнаружила поврежденные файлы, но не смогла их исправить », затем выполните ту же команду в безопасном режиме.

Вот и все; вы сделали! Вот как вы можете использовать команду SFC, чтобы исправить «ошибочный код 2 shellexecuteex» из Windows 10.

6. Ремонт системы

Что ж, если команде SFC не удалось исправить сообщение об ошибке shellexecuteex failed code 2, вам необходимо восстановить вашу систему. Однако вам необходимо иметь рабочий Windows загрузочный DVD или USB для восстановления системы. В Windows Утилита восстановления системы исправит различные проблемы, связанные с файлами System 32, точками восстановления, реестром и т. Д.

Использование восстановления системы

Просто вставьте Windows установочный DVD или USB-накопитель и перезагрузите компьютер. Во время запуска вам будет предложено нажать любую клавишу для загрузки с DVD или USB. Нажмите любую клавишу и на следующей странице выберите «Восстановить». Теперь просто следуйте инструкциям на экране, чтобы восстановить вашу систему.

Итак, это лучшие методы для исправления сообщения об ошибке shellexecuteex failed code 2 из Windows компьютер. Если вы знаете какой-либо другой способ исправить ошибку, сообщите нам об этом в поле для комментариев ниже ».

Понравилась статья? Поделить с друзьями:
  • Shell syntax error near unexpected token
  • Shell notifyicon error 1008
  • Shell infrastructure host как исправить
  • Sheet set error set again
  • Sheet set error roland