lz57005

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору El Sanchez Цитата: какой тип у COMPNAME для A и W функций? Почему WideString, а не string? | String это абстракция, при работе с winapi для избежания путаницы лучше чётко указывать AnsiString и WideString для неюникодных и юникодых реализаций функций. Цитата: Почему нет проверки nSize на необходимость иметь размер буфера не менее MAX_COMPUTERNAME_LENGTH символов, не включая завершающий null-символ, как это указано в документации? | Потому что в сложившийся практике спрашивающий должен заботится о размере буфера, и это делают либо вызывая функцию дважды, вначале получая необходимый размер буфера, а потом само значения, либо вызывая функцию с максимальным размером буфера. Цитата: Почему WideName='' для функции ошибка? | Потому что изначальная цель перехвата, не сообщать программе имя компьютера вообще, мешая идентификации системы и если этот параметр не задан в ini то ничего и не возвращается. Цитата: Почему при nSize < RequiredSize вы не выставляете LastError в ERROR_BUFFER_OVERFLOW, как это указано в документации? | Потому что мы тут не отладкой занимаемся собственного процесса, зачем вообще что-то писать в LastError в этом прикладном решении, функция булева какой смысл вообще смотреть lasterror если нормальная сложившаяся практика: nsize:=0; GetComputerNameW(nil,nsize); GetComputerNameW(@bufW,nsize); Как раз таки вначале узнать размер, именно поэтому функция декларируется с var nsize, к тому же опять так браузеры корректно работают без обработки всех исключений и полного следования документации просто подставляя hardcoded строку "Windows NT" вместо имени компьютера в случае ошибок. Цитата: Зачем вы вообще перехватываете GetComputerName? | Изначально имя компьютера является одним из триггеров чтобы сбросить профиль, как если бы пользователь переместил его физически. Однако не сообщать имя компьютера приводит к тому что если пользоваться различными аспектами синхронизаций онлайн аккаунта, мы получаем или постоянную перезапись данных если создаем чистый профиль и копируем его и пользуемся параллельно, потому что одно и тоже имя компа, один и тот же sync id, или получаем несколько одноименных клонов с именем Windows NT, но разными synс id, если создавать новый профиль у каждой копии с нуля. Я в отличии от большинства хочу добиться не обрезанной портативки когда все компоненты параноидально заглушены, синхронизацией и облачными вкладками не пользуются и прочее, что популярно в среде сборщиков портативок, а полноценного опыта использования браузера как будто он установлен в систему, со всем его удобным функционалом, но без таких вещей как отвал профиля, т.к. синхронизируются не все настройки и это неудобно настраивать каждый раз, невозможность следить в системе и журнале событий в том числе даже на момент запуска, невозможность подцепить групповые политики если они настроены на рабочем компе. Собственно на текущий момент я это решил загружая прокси dll nekto78 как плагин в PurePortable(он на текущий момент отвечает за невозможность читать отдельные ветки реестра, также я разделил невозможность писать в папки профиля и очистку между двумя этими dll), а то чего мне не хватает даже в этой связке я и предложил автору реализовать. Я вообще не программист)) и мимо проходил, а вы устроили допрос)) с вашим подходом лучше делайте пулл реквесты автору, вместо ссылок на документацию, если уж вам небезразличен проект)) | Всего записей: 76 | Зарегистр. 09-04-2012 | Отправлено: 14:26 04-10-2025 | Исправлено: lz57005, 14:28 04-10-2025 |
|