Всем привет. Имеется код в котором введенное значение кладется в файл it's password.txt в директории C:\Windows\Sustem32\config. Программа работает отлично, файл создается, пароль сохраняется, но файл в директории я не вижу. Перепробвал уже все: в настройках проводника ставил "показывать системные файлы", снимал галку со "скрывать системные файлы". Ничего не помогает. Моя программа говорит мне о том, что файл есть и хэш в нем лежит. в видео это видно четко и ясно. https://youtu.be/vxlo6aSFB5k
Дело в том, что Windows не разрешает приложению с правами пользователя писать в системный каталог.
Раньше, во времена Windows 95, любое приложение имело право писать куда угодно, и часто могло обрушить систему, переписав важные настройки или подменив системную библиотеку. Если просто отобрать у приложений права на системный каталог, то старые программы, написанные без учёта безопасности системы, будут просто валиться. Для обеспечения обратной совместимости для таких программ системой проводится виртуализация системного каталога и реестра: если программа пишет в запрещённое место, система считает, что автор программы не читал документацию, и притворяется, что всё в порядке. При этом система на деле складывает файлы в %LOCALAPPDATA%\VirtualStore
, а ключи реестра — в HKCU\Software\Classes\VirtualStore
.
При этом приложению при чтении подставляются значения, как будто бы оно смогло записать туда, куда нельзя. Другие приложения при этом, понятно, ничего не увидят.
Если вы хотите писать куда-то данные, правильное место для них — каталог %APPDATA%\<имя вашего приложения>\
. Не надейтесь на виртуализацию: рано или поздно Майкрософт перестанет поддерживать совместимость с багами Windows 95, и код начнёт просто падать.
Литература:
Inside Windows Vista User Account Control — Mark Russinovich
How User Account Control works — Microsoft Docs.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Язык C# Как запустить exe инсталятор программы внутри формы своей программы? Это на тот случай если инсталятор не поддерживает тихий режим...
Добрый день, ищу помощи при создании службы которая работает с переодичностью (обновляет данные из интернета) в XamarinForms, служба не запускается...