6ac95e43cb
Plugin: UniversalShellExt v1.0.0 Architectures: x64 License: MIT
5.0 KiB
5.0 KiB
UniversalShellExt
Shell Extension COM generica per Windows che aggiunge una voce personalizzabile al menu contestuale di cartelle.
Funzionalità
- ✅ Menu Contestuale Personalizzabile:
- Voce nel menu contestuale per cartelle (click destro su cartella)
- Voce nel menu contestuale per sfondo cartella (click destro su area vuota)
- Testo, icona e comando completamente configurabili via registro
- ✅ Configurazione Flessibile:
- Tutti i parametri letti dal registro di Windows
- Supporto per argomenti personalizzati con placeholder
%1 - Icona estratta automaticamente dall'eseguibile
- ✅ Sicurezza e Compatibilità:
- Supporto UAC elevation automatico se necessario
- Compatibile con Windows 10/11 (x64)
- Accesso registro WOW64 corretto (64-bit)
- Thread-safe
File del Progetto
| File | Descrizione |
|---|---|
UniversalShellExt.cpp |
Codice sorgente C++ della Shell Extension COM |
UniversalShellExt.def |
Definizioni esportazioni DLL |
UniversalShellExt.rc |
Risorse della DLL (Version Info) |
build.py |
Script Python per compilazione, firma e registrazione |
Configurazione
La DLL legge la configurazione dal registro di Windows:
Chiavi di Registro
Percorso: HKEY_LOCAL_MACHINE\SOFTWARE\UniversalShellExt
(Fallback: HKEY_CURRENT_USER\SOFTWARE\UniversalShellExt)
| Valore | Tipo | Descrizione | Esempio |
|---|---|---|---|
Command |
REG_SZ | Percorso completo dell'eseguibile | N:\VSCode.exe |
Arguments |
REG_SZ | Argomenti da passare (%1 = path selezionato) |
"%1" |
MenuText |
REG_SZ | Testo visualizzato nel menu | Apri con VSCode |
Icon |
REG_SZ | Percorso icona (exe o ico) | N:\VSCode.exe |
Template Configurazione
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\UniversalShellExt]
"Command"="N:\\VSCode.exe"
"Arguments"="\"%1\""
"MenuText"="Apri con VSCode Portable"
"Icon"="N:\\VSCode.exe"
Valori Default
Se non configurati:
Arguments→"%1"(passa il percorso selezionato)MenuText→"Open with Application"Icon→ usa lo stesso percorso diCommand
Identificatori
| Tipo | Valore |
|---|---|
| CLSID | {5D849F86-F2A9-41FA-8A24-E01CD6D6696C} |
| Nome COM | Universal Portable Shell Extension |
Compilazione
Prerequisiti
- Visual Studio 2022 (con workload "Desktop development with C++")
- Windows SDK (per
signtool.exeerc.exe) - Python 3.x
- Certificato di firma (opzionale, per firma digitale)
Build Script
# Build completo (compila, copia, firma, registra)
python build.py
# Solo pulizia
python build.py --clean
# Solo deregistrazione
python build.py --unregister
# Build senza firma
python build.py --no-sign
Output
La DLL compilata viene copiata in:
plugins\UniversalShellExt64.dll
Registrazione
Metodo Consigliato (tramite Launcher)
Il launcher VSCode.exe gestisce automaticamente la registrazione:
N:\VSCode.exe /register # Registra la shell extension
N:\VSCode.exe /unregister # Rimuove la shell extension
N:\VSCode.exe /register /silent # Modalità silenziosa
Metodo Manuale (regsvr32)
Eseguire come Amministratore:
:: Registrazione
regsvr32 "N:\Code\Workspace\Launchers\plugins\UniversalShellExt64.dll"
:: Rimozione
regsvr32 /u "N:\Code\Workspace\Launchers\plugins\UniversalShellExt64.dll"
Chiavi di Registro Create
Durante la registrazione (DllRegisterServer):
| Chiave | Scopo |
|---|---|
HKCR\CLSID\{5D849F86-...} |
Registrazione classe COM |
HKCR\CLSID\{5D849F86-...}\InprocServer32 |
Percorso DLL |
HKCR\Directory\shellex\ContextMenuHandlers\UniversalShellExt |
Handler per cartelle |
HKCR\Directory\Background\shellex\ContextMenuHandlers\... |
Handler per sfondo |
HKLM\...\Shell Extensions\Approved |
Whitelist Microsoft |
Come Funziona
- Inizializzazione: Quando l'utente fa click destro, Explorer carica la DLL
- Configurazione: La DLL legge
Command,Arguments,MenuText,Icondal registro - Menu: Inserisce la voce nel menu contestuale con l'icona configurata
- Esecuzione: Al click, sostituisce
%1con il percorso e lancia il comando - UAC: Se il comando richiede elevazione, la richiede automaticamente
Troubleshooting
La voce non appare nel menu
- Verificare che la DLL sia registrata (
regsvr32) - Controllare che le chiavi di registro siano configurate
- Riavviare Explorer (
taskkill /F /IM explorer.exe && explorer.exe)
Errore di registrazione
- Eseguire come Amministratore
- Verificare che la DLL sia firmata (Windows potrebbe bloccare DLL non firmate)
Il comando non viene eseguito
- Verificare il percorso in
Commandsia corretto - Controllare che
Argumentscontenga%1per ricevere il percorso
Versioni
| Versione | Note |
|---|---|
| 1.0.0 | Prima release - Shell extension generica configurabile via registro |
Licenza
Uso interno - emulab.it