2015-05-16 3 views
0

Я очень новичок в программировании систем Windows. В моем проекте мне нужно прочитать зарегистрированное место «ProgramFiles» для 32/64-битных процессов.SHGetKnownFolderPath Vs. чтение Путь к системным папкам из реестра

У меня есть, наконец, два варианта: либо использовать SHGetKnownFolderPath, либо прочитать значения этих папок из системного реестра, но у меня есть некоторые проблемы с безопасностью. Может кто-то сравнить эти два метода с точки зрения безопасности и надежности.

+1

http://blogs.msdn.com/b/oldnewthing/archive/2011/03/22/10144082.aspx –

ответ

1

Вы не читали вещи из недокументированных случайных мест в реестре, потому что это всего лишь деталь реализации, где Windows, в настоящее время хранит эти данные: это легко может случиться, что:

  • в какой-то следующей версии Windows они решат, что такие данные необходимо хранить в другом месте;
  • данные, которые вы нашли, есть только в некоторых конфигурациях (некоторые определенные версии IE установлены, машина не присоединилась к Active Directory, нет переадресации папок на место, ...) - но вы не можете этого знать, нет документация, которая гарантирует вам что-либо.

Правильный путь заключается в использовании документированных интерфейсов, что обеспечивает ОСА, на которой Microsoft явно делает обещание совместимости (они обещают, что публичная функцию, которая работает сегодня - если используется в соответствии с документацией - будет продолжать работать завтра).


Т.Л., д-р: использовать SHGetKnownFolderPath - или SHGetFolderPath если вы хотите сохранить совместимость с версиями Windows, до Vista, которая в целом является хорошей вещью, учитывая, что Windows XP до сих пор, кажется, больше рынка чем все версии OS X.

 Смежные вопросы

  • Нет связанных вопросов^_^