Обновление конфигурации проводника без перезапуска - PullRequest
3 голосов
/ 10 сентября 2009

Мне интересно, есть ли способ обновить раздел реестра HKLM HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer - без перезапуска оболочки.

Я бы хотел сделать это без перезапуска проводника. Есть ли какой-нибудь известный способ сделать это?

Пока я нашел только эту вещь:

RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True

, что не работает для моего случая.

Мне кажется безумным, что MS сделал Explorer, поэтому он не может перечитать свою конфигурацию во время работы), но вы никогда не знаете.

EDIT: Я пытаюсь отключить / включить область уведомлений (трей) без перезапуска. Раздел реестра

Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer \

Переменная: NoTrayItemsDisplay

Значение: 1/0

РЕДАКТИРОВАТЬ 2 Это исходный код, который должен работать, но в Vista это не так, не для области уведомлений, не для моего тестового манекена, который был MyMusic в startMenu (переменная NoStartMenuMyMusic)

#include <stdio.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
   DWORD dwRetVal;

  int  lResult = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, (WPARAM)0,
                      (LPARAM)"Policy",
                      SMTO_ABORTIFHUNG, 5000, &dwRetVal);

   printf("lResult  = %ld\n", lResult);
   printf("dwRetVal = %ld\n", dwRetVal);

   return 0;
}

Я безуспешно перепробовал все нормальные значения wparam и lparam. Я взял код с здесь и чувак утверждает, что это работает ...

В этой статье утверждается, что код не работает.

Что еще более смешно, так это то, что gpupdate подходит для этой работы.

Thx.

1 Ответ

1 голос
/ 10 сентября 2009

Попробуйте отправить сообщение WM_SETTINGCHANGE с wparam = 0 и lparam = "Policy" на панель задач, но не уверены, что это можно сделать с помощью сценариев

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...