Страница 1 из 1

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 15:45
Игорь Столяров
Привет всем ! :)

Столкнулся с наинеприятнейшей ситуацией ... :(
Программа по умолчанию устанавливается в папку C:\Program Files\MySoft\
Там же и создает БД (TPS).

Пользователь, что-то наворотил с ограничениями прав в Windows,
в результате Windows все операции записи перенесла в виртуальное хранилище
C:\Users\KOZLOV\AppData\Local\VirtualStore\Program Files\MySoft
Все работало прекрасно много лет ... и никто об это не знал.

Ну а когда пользователь перенес папку на другой компьютер - в ней
естественно данных не оказалось. :( Хотя все функции внутри программы
показывали, что файлы БД находятся C:\Program Files\MySoft\

Вопрос: Есть ли какие-то функции WinAPI которые позволят получить
реальное расположение файла на диске, с учетом переадресации в VirtualStore ?

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 16:27
RaFaeL
Это не "наворотил", это штатная работа
Поэтому уже несколько как штатно ставим в C:\MySoft\...
Если хочешь "по уму" то базу надо держать не в Program Files а в %ProgramData% или как то так
Микрософт считает, что изменяемые пользователем данные не следует держать в каталоге с программными файлами

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 17:17
Игорь Столяров
RaFaeL писал(а): Это не "наворотил", это штатная работа
Странно ... а где я курил пока этот прикол стал штатным ? ;)
И почему я его нигде раньше не наблюдал (включая свои и еще с пол-сотни обслуживаемых компьютеров) ?

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 17:27
Developer
RaFaeL писал(а): Если хочешь "по уму" то базу надо держать не в Program Files а в %ProgramData%
Или Users\%UserName%\Application Data\%ApplicationName% - где у пользователя (не администратора) полные права доступа.

Эта политика разграничения программного кода и информационной базы пришла вместе с выходом Windows Vista :wink:

Предпосылки перехода на такую модель были ещё с Windows XP


http://www.sql.ru/forum/1113342/virtual ... etoy-papke

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 17:31
Игорь Столяров
Developer писал(а): где у пользователя (не администратора) полные права доступа
Все это очень даже здорово ... для локальной работы.
А если нужно расшарить программу для работы в сети или под терминальной сессией ?
(столь любимой некоторыми разработчиками на Clarion)

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 17:45
Developer
Игорь Столяров писал(а): Все это очень даже здорово ... для локальной работы.
А если нужно расшарить программу для работы в сети или под терминальной сессией ?
(столь любимой некоторыми разработчиками на Clarion)
Application хранить в Program Files или C:\MySoft или
Users\%UserName%\AppData\Roaming - её же и "расшарить"

Database хранить вне Program Files в любом месте - её же и "расшарить" - как раз с такими проблемами описанными в заголовке темы столкнулся в первый раз с Windows 7 :wink:

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 17:54
Игорь Столяров
Developer писал(а): Users\%UserName%\AppData\Roaming - её же и "расшарить"
Не, ну я не совсем из леса вышел ... ;) В указанной Вами папке, индивидуально для каждого
пользователя мы храним рабочие данные, например те же настойки колонок списков.
Но что туда будут МОЛЧА И БЕЗ ОШИБОК перенаправлены файлы БД - сюрприз !
Ну нет у пользователя прав на запись в Program Files - выдайте ошибку и нет проблем.

Я в далекое время изучал в универе программирование на языке PL/1 для IBM370 (и ЕС1045).
В нем была сделана очень страшная вещь - компилятор, который сам молча исправлял некоторые ошибки.
После этого найти почему криво выполняется расчет было практически нереально ... ;)

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 17:55
Developer
Игорь Столяров писал(а): Пользователь, что-то наворотил с ограничениями прав в Windows,
в результате Windows все операции записи перенесла в виртуальное хранилище
C:\Users\KOZLOV\AppData\Local\VirtualStore\Program Files\MySoft
Все работало прекрасно много лет ... и никто об это не знал.
Так и теряются пользовательские базы данных :idied:

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 17:57
Developer
Игорь Столяров писал(а): Ну нет у пользователя прав на запись в Program Files - выдайте ошибку и нет проблем.
Это специальное действие и политика Microsoft при отсутствии прав пользователя :mrgreen:

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 18:00
Developer
Игорь Столяров писал(а): Я в далекое время изучал в универе программирование на языке PL/1 для IBM370 (и ЕС1045).
В нем была сделана очень страшная вещь - компилятор, который сам молча исправлял некоторые ошибки.
После этого найти почему криво выполняется расчет было практически нереально ...
Искусственный интеллект :mrgreen:

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 18:19
RaFaeL
Игорь Столяров писал(а): Странно ... а где я курил пока этот прикол стал штатным ? И почему я его нигде раньше не наблюдал (включая свои и еще с пол-сотни обслуживаемых компьютеров) ?
Значит, все под "админами" работают. А под "пользователем" вот такая ерунда. Запусти программу "от имени администратора" и будет писать куда ты хочешь. И еще, если ты помнишь, какое-то время назад был разговор про права запуска в манифесте, по умолчанию программа запускается и спрашивает права, так вот если отключить все это и поставить asInvoker то она не спрашивает, но ведет себя вот так. Верни в манифесте опцию назад, там еще можно сделать чтобы только с правами админа и запускалась, сразу эту проблему решит. Правда, возникнет другая, ну так это же пользователей проблема, хотят работать - пусть все под админами сидят. ни к чему нам эти микрософтовские заморочки ))

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 18:34
Игорь Столяров
RaFaeL писал(а): Правда, возникнет другая, ну так это же пользователей проблема, хотят работать - пусть все под админами сидят.
Есть еще вариант купить сертификат разработчика Microsoft и подписывать им программы ...
Если не ошибаюсь, цена вопроса порядка $450 / год + услуги местных продаванов ...

Clarion & VirtualStore

Добавлено: 05 Апрель 2017, 18:45
Developer
RaFaeL писал(а): Правда, возникнет другая, ну так это же пользователей проблема, хотят работать - пусть все под админами сидят. ни к чему нам эти микрософтовские заморочки ))
В организациях, где есть серьёзный подход к безопасности и сеть с доменной структурой и наличием системного администратора такой вариант невозможен :mrgreen: