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.ps1repairs machines where an earlier build already did. - Windows' own DLLs are no longer loaded through the DLL search path.
shell.dllandshell.exeare 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.exeexits with 0 on success and non-zero on failure, and restarting Explorer works from 32-bit processes on 64-bit Windows.
Menu fixes
- 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.countreturns 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 -userregisters underHKEY_CURRENT_USER, including the Windows 11 classic-menu redirect with-treat.- The configuration is read from
%APPDATA%\Nilesoft\Shell\shell.nsswhen it exists, andshell -config:initcreates it. -restartrestarts Explorer for the current session only.-config:checkand-statusreport 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) loadsno.nss. Chinese for Hong Kong and Macao (zh-HK,zh-MO) loadszh-TW.nss, and any other Chinese locale loadszh-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.
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.nsson 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::Copyandthis.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.