强制资源管理器重新加载注册表值

时间:2017-07-11 06:42:16

标签: c++ windows registry explorer

我正在尝试用c ++编写一些隐藏我的C盘的代码。

我已阅读此链接:

https://technet.microsoft.com/en-us/library/cc938267.aspx

如果我重新启动“explorer.exe”进程,它的工作就好了。

我正在寻找另一种方法来强制资源管理器重新加载他的注册表值并隐藏我的设备而无需重启资源管理器。

我尝试使用RegFlushKey()功能,但它对我不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

只是按F5工作吗?

如果没有,你可以尝试以下方法:

  

广播WM_SETTINGCHANGE条消息。例如:

class Program
{
    [DllImport("user32.dll", SetLastError = true)]
    private static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, uint fuFlags, uint uTimeout, IntPtr lpdwResult);

    private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);
    private const int WM_SETTINGCHANGE = 0x1a;
    private const int SMTO_ABORTIFHUNG = 0x0002;

    static void Main(string[] args)
    {
        SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, null, SMTO_ABORTIFHUNG, 100, IntPtr.Zero);
    }
}

from this MSDN forum

或者这个(有可能它不会重启资源管理器 - 它可能只是让它刷新):

wmic process where name="explorer.exe" call terminate