世界级难题:如何清除IE的自动完成 记录?!!!!!!!!(140分)

  • 主题发起人 主题发起人 X-Killer
  • 开始时间 开始时间
X

X-Killer

Unregistered / Unconfirmed
GUEST, unregistred user!
清除IE的自动完成表单,找遍整个互联网,竟然没有一种方法是有效的,郁闷呀~~~~
哪位大师救救我呀~~~~~~~~~
 
呵呵,ie自己的选项里有.这样的问题,以后不要在这里问啊.嘿嘿.
 
工具-〉internet 选项-〉内容->自动完成 双击
 
ie里有,你该不是要再编程实现吧?
 
这应该很简单吧???本来想试着解决,但据说是世界难题,还是沉默吧。
 
不知道程序怎么实现.也许可以通过修改注册表实现.
 
把你的想法说清楚,免得大家误会
 
对不起,我没说清楚,我是想用用代码实现呀
 
网上一般的方法是通过删除注册表中的
HKEY_CURRENT_USER/Software/Microsoft/Protected Storage System Provider/S-1-5-21-1417001333-1645522239-725345543-1003/Data下的一个隐藏子键来实现,
但是用这个子键用常规方法是无法删除的,需要提升访问权限,而我用网上的方法提升权限还是无法删除。这就是我的问题的关键。
如果哪位朋友可以告诉我删除注册表中隐藏子键的方法(像IceSword一样),我的问题就解决了。
 
哪个子键?我测试一下,如果成功了就贴代码给你
 
谢谢,您用IceSword就可以看到这样的子键
Protected Storage System Provider/S-1-5-21-1417001333-1645522239-725345543-1003/DATA/e161255a-37c3-11d2-bcaa-00c04fd929db
其中“S-1-5-21-1417001333-1645522239-725345543-1003”子键不同的电脑有所不同,
“e161255a-37c3-11d2-bcaa-00c04fd929db”子键就保存了IE自动完成的历史数据,删除它就可以实现清除IE自动完成记录。
 
经测试提升权限后仍然无法访问。
其实是需要取消这个项的安全保护才能访问,目前有点眉目了,但还没实现,努力ing...
 
谢谢 域
这是别人写的提升权限的代码,但是我发现没什么用
function RegSetPrivilege(AhKey: HKEY; pszSubKey: PChar;
pSD: PSecurityDescriptor; bRecursive: BOOL): BOOL;
var
bRet: BOOL;
hSubKey: HKEY;
lRetCode: LONGINT;
pszKeyName: pchar;
dwSubKeyCnt: DWORD;
dwMaxSubKey: DWORD;
dwValueCnt: DWORD;
dwMaxValueName: DWORD;
dwMaxValueData: DWORD;
i: DWORD;
label cleanup;

begin
bRet := FALSE;
hSubKey := 0;
pszKeyName := nil;

if (pszSubKey = nil) then
goto cleanup;

// open the key for WRITE_DAC access
lRetCode := RegOpenKeyEx(AhKey, pszSubKey, 0, WRITE_DAC, hSubKey);
if (lRetCode <> ERROR_SUCCESS) then
goto cleanup;

// apply the security descriptor to the registry key
lRetCode := RegSetKeySecurity(hSubKey,
DACL_SECURITY_INFORMATION, pSD);
if (lRetCode <> ERROR_SUCCESS) then
begin
// RaiseLastOSError;
goto cleanup;
end;

if (bRecursive) then
begin
// reopen the key for KEY_READ access
RegCloseKey(hSubKey);
hSubKey := 0;
lRetCode := RegOpenKeyEx(AhKey, pszSubKey, 0, KEY_READ, hSubKey);
if (lRetCode <> ERROR_SUCCESS) then
goto cleanup;

// first get an info about this subkey ...
lRetCode := RegQueryInfoKey(hSubKey, 0, 0, 0, @dwSubKeyCnt, @dwMaxSubKey,
0, @dwValueCnt, @dwMaxValueName, @dwMaxValueData, 0, 0);
if (lRetCode <> ERROR_SUCCESS) then
goto cleanup;

// enumerate the subkeys and call RegTreeWalk() recursivly
getmem(pszKeyName, MAX_PATH + 1);
for I := 0 to dwSubKeyCnt - 1 do // Iterate
begin
lRetCode := RegEnumKey(hSubKey, i, pszKeyName, MAX_PATH + 1);
if (lRetCode = ERROR_SUCCESS) then
begin
RegSetPrivilege(hSubKey, pszKeyName, pSD, TRUE);
end
else if (lRetCode = ERROR_NO_MORE_ITEMS) then
begin
break;
end;
end;
freemem(pszKeyName);
end;

bRet := TRUE; // indicate success

cleanup:
if (hSubKey <> 0) then
begin
RegCloseKey(hSubKey);
end;
result := bRet;
end;
 
我头晕了
 
工具----internet 选项----内容----自动完成
 
题目好大啊,世界级~~~~~~~~~
这样的问题你可以到M$论坛上发帖子,这不关DELPHI的事,DELPHI只是一种语言~~~~~~
顺便提示你一下,你可以试一下用GetCurrentProcess,OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges几种函数行不行,如果不行,你就寻求ring0来解决吧
 
#IE设置
#关闭IE弹出窗口阻止程序
[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/New Windows]
"PopupMgr"="no"
#关闭IE自动完成
[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main]
#开启 IE 自动缩图功能
"Enable AutoImageResize"="yes"
#自动完成-表单上的用户名和密码
"FormSuggest Passwords"="no"
#自动完成-提示我保存密码
"FormSuggest PW Ask"="no"
#自动完成-表单
"Use FormSuggest"="no"
#关闭IE自动检测默认浏览器
"Check_Associations"="no"
#自动完成-Web地址
#[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/AutoComplete]
#"AutoSuggest"="no"
 
to zmlmdzg:
提升进程权限是没有用的,之所以写这样的标题,是吸引大家的注意,没有别的意思,谢谢!
to 0桁骀,
不是取消自动完成,是清除自动完成记录,比如IE网页中编辑框下拉时可以看到的历史字符列表。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部