На самом деле не существует какого-либо распространенного способа записи в файл и в то же время запрета доступа пользователя к нему. Вам потребуется поддержка на уровне ОС / платформы, чтобы иметь какое-то защищенное хранилище.
Единственная общедоступная реальная альтернатива - хранить информацию в Интернете на сервере, которым вы управляете, и извлекать ее оттуда по сети. Вы можете кэшировать криптографически подписанную локальную копию с датой истечения срока действия, чтобы избежать необходимости подключаться при каждом запуске программы. Конечно, если вы делаете это в качестве какого-то DRM или аналогичного метода (например, демо-версия с ограниченным временем), вам также нужно будет защитить свое программное обеспечение от модификации.
(Обратите внимание, что изменение самой программы, которое Вы упомянули в комментарии, на самом деле ничем не отличается от изменения других файлов. В частности, пользователь может восстановить более раннюю версию программы из резервной копии или повторно загрузить ее, что может попробовать даже обычный пользователь. любая подпись на программном обеспечении станет недействительной из-за ваших модификаций, и антивирусное программное обеспечение может сработать.)
Если вы просто хотите sh, чтобы спрятать файл где-нибудь, чтобы защитить его от случайных пользователей (только), дайте ему скрыть имя и установить файл скрытым, используя как атрибуты файловой системы, так и имена (в системах * nix с .
в качестве первого символа имени файла). (То, насколько скрытым вы можете сделать его, может быть сорвано из-за разрешений и / или «песочницы», в зависимости от ОС.)
Также обратите внимание, что если ваша цель - скрыть информацию от пользователя, вы должны каким-то образом ее зашифровать. Это включает в себя любые фрагменты данных, которые являются частью программы, которая их записывает.
edit : на случай, если я угадал неправильно, и причина желания сделать это - просто сохранить вещи " очистить », а затем просто сохранить его в обычной области« пользовательских настроек »платформы. Например, AppData или реестр в Windows, пользовательские настройки по умолчанию или ~/Library/Application Support
в macOS, «точечный файл» в системах generi c * nix и т. Д. c. По этой причине не изменяйте само приложение.