Из любопытства:Если данный вызов RegisterClassEx() успешно выполняется один раз, могу ли я считать, что он всегда будет?
В моей wWinMain()
точки входа я заполнение WNDCLASSEX
структуру, которая впоследствии я приходящие к RegisterClassEx()
. Это первое, что делается в WinMain, и это выглядит следующим образом:
WNDCLASSEX windowConfig = {0};
windowConfig.cbSize = sizeof(WNDCLASSEX);
windowConfig.style = CS_HREDRAW | CS_VREDRAW;
windowConfig.lpfnWndProc = WndProc;
windowConfig.hInstance = hInstance;
windowConfig.hCursor = LoadCursor(NULL, IDC_ARROW);
windowConfig.lpszClassName = L"Title";
if (!RegisterClassEx(&windowConfig))
{
MessageBox(NULL, "RegisterClassEx failed for no apparent reason", NULL, NULL);
return FALSE;
}
Если эта конфигурация работает нормально один раз, будет ли он когда-нибудь не? Могло ли одно - учитывая, что параметры не изменены - на практике практически предполагается, что регистрация класса всегда будет успешной и пропустить проверку? Другими словами, только
RegisterClassEx(&windowConfig);
.. и двигаться дальше?
Что может не получиться?
Нет, вы не можете этого принять. Жизнь не улучшилась с помощью антивирусной защиты, исправляющей операционную систему и бесконечного множества утилит, которые, похоже, облегчают вам жизнь, но фактически внедряют DLL в каждый процесс, чтобы выполнить свою работу. Независимо от того, хотите ли вы генерировать значимую диагностику, когда такая перевязка искажает состояние процесса настолько плохо, что этот код не работает, зависит от вас. Вы можете рассчитывать на то, что большинство пользователей сначала вызовут * вы *. Если вам не на что смотреть, тогда вам, конечно, нелегко оттолкнуть его к тому, кто действительно ответственен за это. –
Интересно. Можем ли мы узнать более конкретно, что сделало бы такие инъекции DLL причиной отказа нашей регистрации классов? – d7samurai
@ d7samurai: Из личного опыта люди, которые придумывают инъекцию DLL в качестве решения, как правило, не являются самыми яркими разработчиками. Я разобрал одну такую DLL, содержащую неиспользуемые биты несвязанного образца кода Microsoft, в комплекте с точками входа! – MSalters