Предположительно, потому что вы пытаетесь скопировать файл из другой личной папки пользователя.Это запрещено.Вы можете помещать файлы только в папку текущего пользователя (того, кто запускает установку).В любом случае трудно представить себе вескую причину, по которой вы хотите поступить иначе.
Попробуйте вместо этого использовать константу {userdocs}
.Используйте ExpandConstant
, чтобы развернуть его до полного пути.
Если вам нужно, чтобы вещи находились в месте, доступном для всех пользователей, вам необходимо запустить установщик с правами администратора.,Затем вы сможете читать / писать из каталога профиля All Users
.
РЕДАКТИРОВАТЬ: Ах, извините.Я полностью пропустил ту часть вашего вопроса, где вы сказали, что пытаетесь сделать это после установки.Я просто посмотрел на код и подумал, что это было то, что Inno Setup делает во время процесса установки.
Это совершенно другой ответ на что-то после установкизавершено.Windows 7 (благодаря UAC ) не позволяет вашему приложению (или любому приложению в этом отношении) выполнять запись в системные папки.Это включает в себя каталог Windows
, а также папку Program Files
и все содержащиеся в ней папки.Это мера безопасности, предназначенная для предотвращения запуска приложений в местах, где они не принадлежат.
У вас есть несколько вариантов:
Если вы абсолютно нужен доступ для записи в папку Program Files
, вы можете предложить пользователю повысить уровень процесса вашего приложения.По сути, это означает, что вы будете запрашивать административные привилегии, и они увидят окно от UAC, запрашивающее у них пароль.
Я приведу дополнительную информацию о том, как вы можете это сделать из приложения на C #.в мой ответ на этот вопрос .Вы выполните аналогичные шаги для приложения, написанного на любом другом языке;вы просто вызываете функции, встроенные в Windows API.
Опция лучше , однако, заключается в том, чтобы изменить приложение так, чтобы оно не приходится писать в системные папки.Таким образом, вам не придется работать с правами администратора.Это предназначенная модель для всех стандартных приложений Windows.Microsoft рекомендует его, по крайней мере, с первых дней Windows 2000, но на самом деле вы не были вынуждены следовать ему до Vista.
Я больше говорю о различных местах, к которым у приложения есть доступ для записи (иразличные варианты использования каждого) в моем ответе на этот вопрос .