micmouse521 发表于 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)求大虾帮解决!!!~~~

micmouse521 发表于 2011-8-29 15:44:32

还有一个办法是杀掉explorer.exe
这个办法可以行的通,但是感觉不好

landays 发表于 2011-8-29 16:50:07

gpupdate /force 试过没有?

zhongzijie 发表于 2011-8-29 19:40:11

谢谢楼主分享

arkhe 发表于 2011-8-29 23:50:52

gpupdate /force 试过没有?
landays 发表于 2011-8-29 16:50 http://www.autoitx.com/images/common/back.gif


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

楼主的问题,我也遇到过,那万恶的UAC

afan 发表于 2011-8-30 01:22:11

以前做个这类显示隐藏文件的东东,记得当时用的是Send() + DllCall() 双管齐下…

micmouse521 发表于 2011-8-30 09:33:18

gpupdate /force
这个试过,不管用
Send() + DllCall()这个怎么实现???????

micmouse521 发表于 2011-8-30 09:33:29

回复 6# afan

Send() + DllCall()这个怎么实现???????

netegg 发表于 2011-8-30 10:50:37

envupdate()行不行,猜的,没试过
页: [1]
查看完整版本: 强制刷新注册表