Запись в папку, где находится исполняемый файл

#windows #security

#Windows #Безопасность

Вопрос:

У меня есть программа и служба Windows, расположенные в одной папке. Они могли запускаться под разными учетными записями пользователей. Всегда ли они смогут выполнять запись в папку, где находится их .exe, или это все еще зависит от прав конкретной учетной записи, под которой они запускаются? Если нет, то какую папку я могу использовать для обмена общими данными среди них?

Ответ №1:

Нет. В общем случае исполняемые файлы устанавливаются в Program Files ( CSIDL_PROGRAM_FILES ). Вам нужен подкаталог для конкретной программы в CSIDL_COMMON_APPDATA . (Создайте этот подкаталог с соответствующими ACL для вашей ситуации).

Ответ №2:

В большинстве случаев (т.Е. для большинства типов учетных записей, которые не являются администраторами) приложение (или служба) не сможет выполнить запись в папку Program Files, если оно было установлено там (как это делается по умолчанию).

Для обмена данными между приложениями вы можете использовать папку folderid_programmadata и получить к ней путь, используя SHGetFolderPath.