找回密码
 加入
搜索
查看: 4662|回复: 8

[系统综合] 强制刷新注册表

  [复制链接]
发表于 2011-8-29 15:37:58 | 显示全部楼层 |阅读模式
本帖最后由 micmouse521 于 2011-8-29 15:39 编辑

无聊
由于某些方面的原因,总是来回切换文件夹选项中隐藏文件的功能,于是想自己写个小程序直接实现这个功能,自己修改注册表。
功能是实现了,不过还是有个问题。
大家看看有没有好的办法

我用au3脚本实现打开文件选项中的隐藏文件和驱动器选项后,每次进程我的电脑,得刷新一下
要不然还是和没改一样
于是想到了是不是注册表没有生效

在网上找了半天,找到两种方法,可是用了没有效果

我的脚本au3
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         mic
 Script Function:
        文件夹选项 ==若为查看,则将查看隐藏文件改为不查看隐藏文件
                                若为不查看,则将不查看隐藏文件改为查看隐藏文件

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here



#cs
;查看隐藏文件设置,测底隐藏文件
        $status = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL", "CheckedValue")
        $proxy  = RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL", "DefaultValue")
        MsgBox(48,"查询结果","CheckedValue:"&$status&@CRLF&"DefaultValue:"&$proxy)
        
        $status = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN", "CheckedValue")
        $proxy  = RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN", "DefaultValue")
        MsgBox(48,"查询结果","CheckedValue:"&$status&@CRLF&"DefaultValue:"&$proxy)
        
;查看文件夹选项中的隐藏文件设置
#ce
$status = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Hidden")

If $status = 2 Then
        RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Hidden", "REG_DWORD", 1)
        MsgBox(64,@UserName,"文件夹选项当前状态为:"&@CRLF&"      显示隐藏文件和驱动器")
Else
        RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Hidden", "REG_DWORD", 2)
        MsgBox(48,@UserName,"文件夹选项当前状态为:"&@CRLF&"      不显示隐藏文件和驱动器")
EndIf
;        Run("secedit /refreshpolicy machine_policy /enforce", "", @SW_HIDE)
;        Run("secedit /refreshpolicy machine_policy /enforce", "", @SW_HIDE)
;

两个不管用的解决办法

DllCall("user32.dll","int","SendMessageTimeout","hwnd",65535,"int",26,"int",0,"int",0,"int",0,"int",1000,"str","dwResult")
DllCall("shell32.dll","none","SHChangeNotify","long",0x8000000,"int",0,"ptr",0,"ptr", 0)
求大虾帮解决!!!~~~
 楼主| 发表于 2011-8-29 15:44:32 | 显示全部楼层
还有一个办法是杀掉explorer.exe
这个办法可以行的通,但是感觉不好
发表于 2011-8-29 16:50:07 | 显示全部楼层
gpupdate /force 试过没有?
发表于 2011-8-29 19:40:11 | 显示全部楼层
谢谢楼主分享
发表于 2011-8-29 23:50:52 | 显示全部楼层
gpupdate /force 试过没有?
landays 发表于 2011-8-29 16:50



    策略更新吗? 没试过,不知道可不可以。

楼主的问题,我也遇到过,那万恶的UAC
发表于 2011-8-30 01:22:11 | 显示全部楼层
以前做个这类显示隐藏文件的东东,记得当时用的是Send() + DllCall() 双管齐下…

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
powerofos + 30 + 5 已收到你的小工具,谢谢提供。

查看全部评分

 楼主| 发表于 2011-8-30 09:33:18 | 显示全部楼层
gpupdate /force
这个试过,不管用
Send() + DllCall()  这个怎么实现???????
 楼主| 发表于 2011-8-30 09:33:29 | 显示全部楼层
回复 6# afan

Send() + DllCall()  这个怎么实现???????
发表于 2011-8-30 10:50:37 | 显示全部楼层
envupdate()行不行,猜的,没试过
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 07:04 , Processed in 0.080251 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表