Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
ВнизНе могу удалить ключ реестра Найти похожие ветки
← →
Gu (2011-06-26 08:06) [0]Win7x64,Delphi Xe,учетная запись администратора.
Создаем ключ:
...
var reg1:tregistry;key:string;
begin
key:="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\ {0052D9FC-6764-4D29-A66F-2F3BD9E2BB40}";
reg1:=tregistry.Create;
reg1.RootKey:=HKEY_LOCAL_MACHINE;
reg1.Access:=KEY_ALL_ACCESS;
if reg1.Openkey(key,true)=true then showmessage("ok");
reg1.Closekey;
reg1.free;
end;
Создает пустой ключ нормально, через regedit его видно. Удаляем:
...
var reg1:tregistry;key:string;
begin
key:="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\ {0052D9FC-6764-4D29-A66F-2F3BD9E2BB40}";
reg1:=tregistry.Create;
reg1.RootKey:=HKEY_LOCAL_MACHINE;
reg1.Access:=KEY_WOW64_64KEY + KEY_ALL_ACCESS;
if reg1.KeyExists(key)=true then showmessage("Key found");
if reg1.DeleteKey(key)=true then showmessage("ok");
//showmessage(inttostr(getlasterror));
reg1.free;
end;
Не удаляет и ошибок нет. Просто не отрабатывает DeleteKey. Через regedit ключ удалить можно. После создания смотрю права, на этот ключ через regedit, все ок, наследуются от веток выше, для учетки админа, права есть на удаление. Что может мешать?
Читал: http://www.programmersforum.ru/showthread.php?t=80984 , константа KEY_WOW64_64KEY правильно определена и ключ создает в нужном (не в wow6432node, a там где key:="..) месте. Может кто у себя потестит на x64?
← →
Gu (2011-06-26 08:07) [1]в создании ключика тоже reg1.Access:=KEY_WOW64_64KEY + KEY_ALL_ACCESS; забыл дописать
← →
Gu (2011-06-26 08:16) [2]ага, если заменить //showmessage(inttostr(getlasterror)); на showmessage(reg1.LastErrorMsg); показывает "не найден", и куда он девается и почему тогда KeyExists отрабатывает норм?
← →
Gu (2011-06-26 08:24) [3]RegDeleteKey тоже не хочет удалять
← →
Gu (2011-06-26 08:52) [4]тэкс, заработало так:
function RegDelKey(RootKey: HKEY; Name: String): boolean;
function LastPos(Needle: Char; Haystack: String): integer;
begin
for Result := Length(Haystack) downto 1 do
if Haystack[Result] = Needle then
Break;
end;
var
SubKey: String; n: integer; hTemp: HKEY;
begin
Result := False;
n := LastPos("\", Name);
if n > 0 then
begin
SubKey := Copy(Name, 1, n - 1);
if RegOpenKeyEx(RootKey, PChar(SubKey), 0, KEY_WOW64_64KEY + KEY_ALL_ACCESS, hTemp) = ERROR_SUCCESS then
begin
SubKey := Copy(Name, n + 1, Length(Name) - n);
Result := (RegDeleteKey(hTemp, PChar(SubKey)) = ERROR_SUCCESS);
RegCloseKey(hTemp);
end;
end;
end;
прямо как с непустыми папками
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c