2017-07-11 9 views
2

私のCドライブを隠すC++のコードを少し書こうとしています。エクスプローラがレジストリ値をリロードするように強制します

私は、このリンクを読んだことがある:私は "explorer.exeの" プロセスを再起動する場合

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

とその作業だけで罰金を。

エクスプローラがレジストリ値を再読み込みし、エクスプローラを再起動しないでデバイスを非表示にする別の方法を探しています。

RegFlushKey()機能を使用しようとしましたが、機能しません。

アイデア?

答えて

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 
+0

私はすでにこれを試してみました: 'SendMessageTimeout(HWND_BROADCAST、WM_SETTINGCHANGE、IntPtr.Zero、(LPARM)「ポリシー」、SMTO_ABORTIFHUNG、100、IntPtr.Zero);「 およびそれd私のために働かないでください。 私が使用することも試してみました: 'SHChangeNotify(SHNCE_UPDATEITEM、SHCNF_IDLIST、NULL、NULL)' しかし、これも私のために働くいけません。 –

+0

このコマンドを試しましたか? – llvmastproject

+0

'wmic process where name =" explorer.exe "call terminate' – llvmastproject

関連する問題