Application Data

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Application Data

Сообщение $Yastrebov$ » 06.07.2008 (Вс) 22:39

По стандартам Microsoft приложения, должны сохранять настройки пользователя в системном реестре или в папке Application Data.

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

Вопрос: Позволяют ли средства Windows 2000 (и выше) организовать копирование из указанной мной папки, или системной, все стандартные для моего приложения файлы(папки) в Application Data юзера, который запустил мою программу в первый раз? В процессе эти данные будут изменяться и быть различными для каждого пользователя. Как это организовать? Куда складывать файлы?

Попробовал папочку Application Data профиля "All Users", но от туда ничего не копируется. Возможно, я что-то сделал неверно.
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 07.07.2008 (Пн) 9:49

Попробовал папочку Application Data профиля "All Users", но от туда ничего не копируется. Возможно, я что-то сделал неверно.


ПОчему это не копируется? Доступ в эту папку должен быть открыт всем пользователям. Значит, ошибка в коде, либо неверная настройка компьютера в части доступа к этой папке.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 07.07.2008 (Пн) 10:10

Если не ошибаюсь, доступ к самой AllUsers закрыт ограниченным пользователям, но открыт для чтения к вложенным папкам.
Лучший способ понять что-то самому — объяснить это другому.

HKEY_SUPER_MASHINE
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 78
Зарегистрирован: 02.07.2008 (Ср) 12:17
Откуда: Тольятти, школа, случайно

Сообщение HKEY_SUPER_MASHINE » 07.07.2008 (Пн) 10:50

Зачем морочиться? Почему нельзя записать данные в папку с программой или в тот же реестр?
Чипсы оставляют неприятный осадок в желудке
Их состав оставляет неприятный осадок в душе

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 07.07.2008 (Пн) 15:01

Зачем морочиться? Почему нельзя записать данные в папку с программой или в тот же реестр?


Есть стандарты, которые стоит соблюдать. Тем более гораздо удобнее получать путь к Application Data для каждого User-а, чем устраивать свою иерархию в папке с программой. Про реестр я вообще молчу... так как БД туда не полезет.

А есть ли переменная среды (Environ$) для папки "All Users", ведь в Vista она уже называется "Public"?

Наверное, лучше всего копировать программно именно из "All Users\Application Data" в "Username\Application Data". Я почему-то считал, что Windows должна сама обновлять профиль юзера по шаблону из "All Users" без участия кода программы :) Видимо, ошибался!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 07.07.2008 (Пн) 15:59

AllUsers не является шаблоном, его объекты не копируются юзерам, у юзеров только ссылки на объекты AllUsers, сами объекты представлены в единственном экземпляре. Вернее даже ссылок нет, одна видимость. Например, группа программ Microsoft Visual Studio 6.0, которую ты видишь в кнопке Пуск, на самом деле находится в \All Users\Главное меню\Программы\, в \User\Главное меню\Программы нет ни ее, ни ссылки на AllUsers.

Тоже самое с Application Data. Использовать All Users в твоем случае вообще нет никакого смысла. Короче, единственное предназначение All Users - расшарить один и тот же объект на несколько юзеров.

ADD:
Использовать All Users в твоем случае вообще нет никакого смысла.

Даже более того, смысл явно отрицательный. При копировании из All Users ты рискуешь получить у конкретного юзера два идентичных объекта — один локальный, второй общий. Как поведет себя система в этом случае, могу только догадываться.
Лучший способ понять что-то самому — объяснить это другому.

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 07.07.2008 (Пн) 16:24

Antonariy, спасибо за разъяснение. Но...
На примере: \All Users\Главное меню\Программы\ - это действительно так. Но вот проэкспериментируй с папкой \All Users\Application Data\ЛЮБАЯ ПАПКА. Тут уже будет другая картина и ты уже не увидешь в папке \User\Application Data\ какой-либо ссылки и тем более самой папки с названием "ЛЮБАЯ ПАПКА".
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 07.07.2008 (Пн) 16:45

Я, между прочим, именно это и сказал.

Я не знаю, есть ли какой инструментарий для работы с Application Data конкретного юзера (типа GetSetting, который работает с юзерским реестром), однако предполагаю, что, если он есть (а иначе какой смысл?), то он объединяет настройки из All Users и User в одно пространство. Заметь, в папках All Users\Application Data\Microsoft и User\Application Data\Microsoft нет одноименных файлов (папки есть).
А теперь представь, что этот инструментарий объединяет твои идентичные структуры из All Users и User.
Лучший способ понять что-то самому — объяснить это другому.

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 07.07.2008 (Пн) 22:52

Решено! Буду хранить общие данные в Common Files. Думаю это оптимальное решение.

Если кому нужно, то путь Common Files можно получить из переменных среды: Environ("CommonProgramFiles")

Спасибо за участие в обсуждении!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList