Nilesoft Shell GitHub

About this fork


This site documents Abdullah-Masood-05/Shell, a fork of Nilesoft Shell by Moudey and Nilesoft. The configuration language and the rest of this documentation are the same as upstream; this page lists what the fork changes.


Security
  • Registration no longer widens the access rights on the program folder, and no longer gives the Users group full control of the Windows 11 context-menu CLSID key. scripts\repair-treatas-acl.ps1 repairs machines where an earlier build already did.
  • Windows' own DLLs are no longer loaded through the DLL search path.
  • shell.dll and shell.exe are built with Control Flow Guard.
Stability
  • COM is no longer initialised from DllMain.
  • Import nesting is bounded, so a configuration that imports itself cannot crash Explorer.
  • A configuration with an error is retried on the next right-click once it has been saved again, and a working configuration reloads when it or any import changes. No restart is needed after editing.
  • Fixes for COM reference counting, registry string reads, Win32 path buffers, UTF-8 conversion, file copying and the taskbar origin on multiple threads.
  • Theme colours fall back to the system colours when a lookup fails.
  • shell.exe exits with 0 on success and non-zero on failure, and restarting Explorer works from 32-bit processes on 64-bit Windows.
  • Removing duplicate items no longer overwrites the first item; leading separators are removed.
  • System submenus that fill themselves in later (such as Send to and New) are read again when opened.
  • Menus and tooltips are positioned correctly on monitors with negative coordinates, and the DPI is taken from the window rather than the monitor.
  • this.count returns the number of system items in the menu (0 on the Windows 11 taskbar, whose own menu is empty).
  • Shell no longer changes your submenu show delay or selection-fade settings, or Explorer's working directory.
Per-user mode

Shell can be set up for one user without administrator rights:

  • shell -register -user registers under HKEY_CURRENT_USER, including the Windows 11 classic-menu redirect with -treat.
  • The configuration is read from %APPDATA%\Nilesoft\Shell\shell.nss when it exists, and shell -config:init creates it.
  • -restart restarts Explorer for the current session only.
  • -config:check and -status report the configuration and installation as JSON.

See Command line for the details.

Setup
  • Upgrading with the installer no longer deletes your shell.nss.
  • All language files are installed, and the language is chosen from your Windows locale, falling back to the language and then to English. Norwegian (nb-NO, nn-NO) loads no.nss. Chinese for Hong Kong and Macao (zh-HK, zh-MO) loads zh-TW.nss, and any other Chinese locale loads zh-CN.nss.
  • Unregistering always removes the Windows 11 redirect.
Default configuration

The default shell.nss adds menus from Abdullah Masood's nilesoft-shell-config (MIT):

  • imports\develop.nss: a Develop menu shown while Shift is held. Items for programs that are not installed, such as Visual Studio Code or the .NET SDK, are hidden.
  • imports\my-tools.nss: Copy (path, name, extension, parent folder), New file and System (restart Explorer, empty the Recycle Bin, lock, sleep and more) menus.
The Nilesoft Shell Pro app

A desktop app for checking the installation, editing the configuration and restoring backups: the Nilesoft Shell Pro entry in the Start menu. See The app.

The Home page of Nilesoft Shell Pro
The Home page of the app.
Credits

Nilesoft Shell is created by Moudey and Nilesoft and is released under the MIT License. Many fixes in this fork were ported, with credit in each commit message, from other forks:

  • opj161/Shell: the security fixes, Control Flow Guard, path, COM, registry and encoding fixes, DPI, and keeping shell.nss on upgrade.
  • TCNOco/Shell: COM outside DllMain, bounded imports, duplicate removal, and leaving Explorer's settings and working directory alone.
  • arvaidasre/Shell: removing the Windows 11 redirect on unregister, the theme colour fallback, File::Copy and this.count.
  • iMAboud/Shell: its work on recovering from a broken configuration was reviewed when designing the retry-on-save behaviour.

The fork keeps the documentation pages shared with upstream, so changes there can still be merged.