A- A A+

Document maken uit Explorer context menu verwijderen op Windows 2008 (R2), Vista en 7

Ster inactiefSter inactiefSter inactiefSter inactiefSter inactief
 

Wanneer je in de registry kijkt zie je dat alle bestandsextensies zich bevinden onder HKEY_CLASSES_ROOT. Stel je neemt een programma, bijvoorbeeld Decos Direct. Deze maakt standaard een de mogelijkheid aan voor alle gebruikers om .dcc bestanden aan te maken, of Microsoft Word, deze zorgt er voor dat alle gebruikers op het systeem een "Word Document" kunnen aanmaken. In het register ziet dit er als volgt uit:

shellnew-word

Zoals aan bovenstaande afbeelding te zien is, heeft Microsoft bedacht dat je met "ShellNew" in combinatie met "NullFile" aangeeft dat je een bestand vanuit Explorer kan aanmaken. Een slimme methodiek. Op deze wijze kan je dit zelf ook regelen voor andere bestandstypen.

Om er voor te zorgen dat deze functionaliteit weg is, kun je "NullFile" wissen, of zelfs de hele ShellNew weggooien. Met als nadeel, dat je hem ook weer handmatig aan moet maken, of bij een update deze weer zichtbaar kan worden. Dus dit moet ook anders kunnen.

HKEY_CLASSES_ROOT is simpelweg een presentatie van HKEY_LOCAL_MACHINE\SOFTWARE\Classes en HKEY_CURRENT_USER\Software\Classes (het is iets ingewikkelder dan dit, maar in basis komt het hier op neer). Dus hier moet iets mee te doen zijn. Dus van deze kennis kunnen we gebruikmaken en wel op een heel eenvoudige wijze.

Wat nu als bepaalde accounts de key gewoon niet kunnen lezen? Dan kan Explorer er ook niet bij. Gebruikmakend van deze kennis zullen we eens kijken naar de rechten van deze key:

shellnew-rechten

Wat we zien is dat Users Leesrechten hebben. Dus wanneer Explorer draait in de security context van de gebruiker kan deze key gelezen worden en dus ook worden weergegeven. Wanneer we er echter voor zorgen dat Users er niet meer bij kan, wat is er dan aan de hand? Juist Explorer kan de key niet meer lezen en dus niet meer weergeven. En hierin zit ook onze oplossing.

Vanuit een script is dit te regelen met het commando SetACL.exe. Deze Tool is niet standaard aanwezig binnen Windows, dus moeten we onze toevlucht nemen tot de tool van Helge Klein welke hier is te downloaden. Wanneer we hier een concept script van maken ziet dit er als volgt uit:

SetACL.exe -on HKLM\SOFTWARE\Classes\.docx\Word.Document.12\ShellNew -ot reg -actn setprot -op dacl:p_nc;sacl:p_nc -rec yes
SetACL.exe -on HKLM\SOFTWARE\Classes\.docx\Word.Document.12\ShellNew -ot reg -actn ace -ace "n:system;p:read" -ace "n:administrators;p:read" -actn clear -clr "dacl,sacl" -actn rstchldrn -rst "dacl,sacl" -rec yes