IO в каталоге программных файлов

Я создал программу, которая собирает данные из файла.txt, читая его, и записывает данные в другой файл.txt. Тем не менее, есть проблема. Когда я запускаю программу в обычном каталоге, она работает отлично. Проблема возникает, когда я помещаю ее в каталог C:\Program Files. Когда я запускаю его, я получаю IOERROR: [Errno 13] В доступе отказано: "мой подкаталог". Я полагаю, что это, вероятно, связано с тем, что в этом каталоге есть дополнительные протоколы, когда дело доходит до редактирования файлов внутри него.

Это в Windows 7, если это еще не было очевидно.

Также, если это имеет значение, программа была написана на Python, а затем преобразована в.exe с py2exe.

4 ответа

Решение

Все каталоги под \Program Files а также \Windowsа также корень C:\, требуются права администратора в Windows Vista и 7 (и XP, при работе от имени пользователя без прав администратора, что не является значением по умолчанию). Вы не должны пытаться писать там в первую очередь. Это мера безопасности, помогающая предотвратить проникновение вредоносных программ в те места, где они не должны. Поскольку Vista выпущена несколько лет назад, на сайте доступно множество статей. UAC, Вы можете начать здесь.

Я предлагаю сохранить папку в%appdata%\my подкаталоге. Вам не понадобятся права администратора для этого.

Наиболее вероятная причина этого заключается в том, что каталоги "Program Files" в Windows 7 требуют административных прав для создания подкаталогов.

Вы можете запустить python от имени администратора (удерживать Shift, щелкнуть правой кнопкой мыши python.exe, запускать от имени администратора) или записать в каталог, который не является Program Files.

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

Другие вопросы по тегам