#windows #security
#Windows #Безопасность
Вопрос:
У меня есть программа и служба Windows, расположенные в одной папке. Они могли запускаться под разными учетными записями пользователей. Всегда ли они смогут выполнять запись в папку, где находится их .exe, или это все еще зависит от прав конкретной учетной записи, под которой они запускаются? Если нет, то какую папку я могу использовать для обмена общими данными среди них?
Ответ №1:
Нет. В общем случае исполняемые файлы устанавливаются в Program Files
( CSIDL_PROGRAM_FILES
). Вам нужен подкаталог для конкретной программы в CSIDL_COMMON_APPDATA
. (Создайте этот подкаталог с соответствующими ACL для вашей ситуации).
Ответ №2:
В большинстве случаев (т.Е. для большинства типов учетных записей, которые не являются администраторами) приложение (или служба) не сможет выполнить запись в папку Program Files, если оно было установлено там (как это делается по умолчанию).
Для обмена данными между приложениями вы можете использовать папку folderid_programmadata и получить к ней путь, используя SHGetFolderPath.