我用下面的代码来禁用控制面板:
RegistryKey RegKey = Registry.CurrentUser.CreateSubKey(
@"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer");
RegKey.SetValue("NoControlPanel", false, RegistryValueKind.DWord);
RegKey.Close();
上面的代码重新启动之后,禁用控制面板,我想立即应用设置而无需重新启动。 请帮我。
试试这个...
private const int HWND_BROADCAST = 0xffff;
private const int WM_WININICHANGE = 0x001a, WM_SETTINGCHANGE = WM_WININICHANGE, INI_INTL = 1;
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, INI_INTL);
[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, uint wMsg, uint wParam, uint lParam);
这将通知已经作了修改注册表的所有应用程序,以及那些接受通知shuould重新加载它们的设置程序。
请注意,并非所有的应用程序都可以这样做,但是之类的东西控制面板应。
我没有测试过这一点,但我怀疑你只需要关闭所有的explorer.exe进程,这才会生效。
需要注意的是桌面和任务栏是由Explorer.exe的提供,所以你需要关闭它们毕竟开始一个新的。
这是一个有点敌对的,因为用户可能有他们不想失去资源管理器窗口,这样做只有当它不会惹恼人。 8-)