"Если вдруг открылся люк, не пугайся, это глюк!" (с) Если что-то работает не так, вы нашли ошибку или опечатку в программе — вам в этот раздел
Andrey Kozhaev
Возникает проблема использования сервером разных файлов БД при запуске через ярлык и через сервис.

​В продолжение темы поднятой мною на форуме (viewtopic.php?f=34&t=2073). Нашел почему так происходит.

У меня сервер MyChat стоит на сервере терминалов, и если я запускаю сервер через ярлык и хотя пользователь входит в группу администраторов, то сначала система создает копию файлов сервера MyChat по след. пути: C:\Users\kik\AppData\Local\VirtualStore\ProgramData\MyChatServerFree\.

Если же запускать ярлык через опцию "Запустить от имени администратора" то система копию не создает и сервер MyChat использует правильные свои файлы по пути: C:\ProgramData\MyChatServerFree\
Аватара пользователя
Алексей Пикуров
Андрей, надо проверить на Windows 2008 R2. У вас именно эта серверная ОС установлена, насколько я помню?
Andrey Kozhaev
Да вы правильно помните.
Andrey Kozhaev
​Или я вас не правильно понял, и это мне нужно проверить? Но тогда я не понял что проверить.
Аватара пользователя
Алексей Пикуров
Это мне надо проверить :) По идее, в VirtualStore ничего не должно создаваться, однако, как вы пишете, всё же создаётся копия базы. Это означает, что Windows почему-то начинает виртуализировать этот файл. Надо разобраться, почему.
Andrey Kozhaev
​Ну как я понял она там не каждый раз создается, а вот даже не знаю когда создалась, и теперь если запускать от пользователя то используется именно она.
Аватара пользователя
Алексей Пикуров
Мне надо установить виртуальную машину и попробовать самому, пока ничего не могу сказать. Буду делать - буду спрашивать вас по ходу дела.
Владимир_radiadema
Запись в ...<username>\AppData\VirtualStore... - это защитная реакция ОС, для совместимости с программами, пытающимися превысить полномочия )
Вот для почитать о виртуализации популярно:
Защита системных файлов с помощью виртуализации UAC (часть 1)
Защита системных файлов с помощью виртуализации UAC (часть 2)
PS
в <username>\AppData\VirtualStore\ProgramData\MyChatServer\logs\
НЕ пишет, если запустить как сервис или от админа (run As...),
но пишет туда логи при запуске от пользователя (даже из группы администраторов, но без повышения полномочий при запуске)...
причем, интересно, что и в C:\ProgramData\MyChatServer\logs\ начинает писать, но там логи "обрываются", а в VirtualStore - полные, начало у них одинаково )))
У меня, например, все остальное (backup, db и пр.) хранится правильно - C:\ProgramData\MyChatServer и не пытается виртуализироваться.
Andrey Kozhaev
Как я понял из первой статьи, что можно запретить системе виртуализировать программу и ее данные через реестр.
Владимир_radiadema
Хм... а мне кажется, что нужно посмотреть почему, из-за чего логи виртуализируются, а не пытаться принудительно запретить (еще не факт, что без проблем все это получится).
PS
Сейчас посмотрел, интересно получается:
вчера удалил все логи за январь (для теста), перезапускал по разному сервер, описал выше то, что было...
сегодня смотрю (сервер, ес-но после "опытов" не выключался, стоит автозапуск, т.е. под обычным пользователем, без повышения привилегий):
логи за 13 (сегодня) опять начинают писаться в положенное место (C:\ProgramData\MyChatServer\logs\2013\01\13), и вроде не "оборвались", а в AppData\Local\VirtualStore\ProgramData\MyChatServer\logs\2013\01\ даже папка 01\13 не была создана!