Ваша точка 3 недопустима. Системы, которые разработаны только для использования единственной страны, не должны волноваться о unicode, и некоторые используемые языки/продукты не поддерживают unicode или вообще или только частично. Например, TurboTax только для США (и даже с канадской версией с французским языком все еще просто ЛАТИНСКИЙ 1), таким образом, они не нуждались бы или имели бы для волнения о unicode и вероятно не поддерживают его (я не знаю, делают ли они или нет, но даже если они делают, это - просто пример).
"Сегодняшние приложения должны всегда быть совместимым Unicode".
, вероятно, более допустим выраженный как:
"Сегодняшние приложения должны всегда быть Unicode, совместимым, если ничто особые потребности для появления для обработки Unicode правильно, и ранее существующей кодовой базы или какой-либо другой части приложения не должно быть обновлено конкретно для поддержки его"
Аргументы, переданные в командной строке через ImagePath, доступны в main () или через GetCommandLine (). Вы можете установить с помощью аргументов командной строки, а затем в своем ServiceMain проверить, были ли переданы какие-либо аргументы в параметре lpszArgs. Если нет, вызовите GetCommandLine и посмотрите, были ли переданы таким образом.
sc config MyService binPath= MyService.exe -option
Обновление
Отдельные параметры службы хранятся в реестре в ключе HKLM \ SYSTEM \ CurrentControlSet \ Services \
. Я не уверен, как параметры передаются службе. Я полагаю, что SCM считывает эти значения, а затем, когда он вызывает StartService
, он передает их в обратный вызов ServiceMain
.