Ich habe hier ein etwas seltsames Phänomen. Unter dem Schlüssel
HKCU\Software\Microsoft\windows\CurrentVersion\Exp lorer\Discardable\PostSetup\ShellNew findetman die Einträge vom den Kontextmenü die man sieht wenn man im Explorer mit der rechten Maustaste klickt und dann "Neu" auswählt. Wenn man dort einen Wert löscht, dann fehlt auch der zugehörige Eintrag im Kontextmenü. Öffnet man das Kontextmenü aber zum zweiten mal, ist der Eintrag in der Registry und im Menü wieder da. allerdings wollte ich die Einträge dauerhaft löschen, weil das Menü voller Einträge ist, die ich nicht brauche und man die nicht findet, die man braucht.
Ich habe mir auch schon ein kleines Programm dafür geschrieben:
Delphi-Quellcode:
uses
Registry;
const KEY = '
Software\Microsoft\windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNew';
procedure RegGetValueNames(
const Key: AnsiString; Values: TStrings);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create(KEY_READ);
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey(KEY, false)
then
begin
Reg.GetValueNames(Values);
end
else
RaiseLastOSError;
finally
Reg.Free;
end;
end;
procedure RegDeleteValue(
const Key: AnsiString;
const Value: AnsiString);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
if Reg.OpenKey(KEY, false)
then
begin
if not Reg.DeleteValue(Value)
then
RaiseLastOSError;
end;
finally
Reg.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
try
RegGetValueNames(KEY, CheckListBox1.Items);
for i := 0
to CheckListBox1.Count - 1
do
CheckListBox1.Checked[i] := true;
except
on E:
Exception do
ShowMessage(E.
Message);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
try
for i := 0
to CheckListBox1.Count - 1
do
begin
if not CheckListBox1.Checked[i]
then
RegDeleteValue(KEY, CheckListBox1.Items[i]);
end;
except
on E:
Exception do
ShowMessage(E.
Message);
end;
end;
Das funktioniert auch, bis auf die Tatsache, dass Windows die gelöschten Einträge wieder erstellt. Windows muss sie sich also noch irgendwo anders merken. Nur wo? Ich habe unter
HKCU nichts weiter gefunden.