Форум программистов, компьютерный форум CyberForum.ru

Получить %appdata% юзера - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Mustang92
3 / 3 / 1
Регистрация: 24.04.2011
Сообщений: 150
13.09.2012, 22:53     Получить %appdata% юзера #1
Здравствуйте, возникла следующая проблема: запущена служба c аккаунта Local Service, хочется получить полный путь к папке %appdata% юзера, а он возвращает %appdata% самой службы, т.е. C:\Windows\system32\systemprofile. Подскажите, пожалуйста, как получить путь к папке %appdata% юзера?!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2012, 22:53     Получить %appdata% юзера
Посмотрите здесь:

C++ Отловить момент логина юзера в NT/2000, какое сообщение?
C++ Нужно что бы если в текстбокс не вводиться текст, то срабатывала исключительная ситуация, которая просила бы юзера заполнить его.
C++ Замена %APPDATA%, %WINDIR% и т.п. в строке на реальные каталоги

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
14.09.2012, 06:43     Получить %appdata% юзера #2
а если на компе будет 100 юзеров, путь к папке %appdata% какого из них надо будет возвратить?
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2012, 12:48     Получить %appdata% юзера #3
Mustang92, существует специальная функция для экстракта стандартных каталогово системы SHGetSpecialFolderLocation
Ниже код возвращающий через MessageBox путь к каталогу appdata для текущего пользователя
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <windows.h>
#include <shlobj.h>
 
int main()
{
    LPITEMIDLIST pAPPData            = {0};
    char         szAPPData[MAX_PATH] = {0};
    if(!SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA , &pAPPData)))
        printf("SHGetSpecialFolderLocation ERROR : %s\n",strerror(GetLastError()));
    else
    if(!SUCCEEDED(SHGetPathFromIDList(pAPPData, szAPPData)))
        printf("SHGetPathFromIDList ERROR : %s\n",strerror(GetLastError()));
    else
        MessageBox(NULL,szAPPData,"APPDATAPath",MAX_PATH);
    return 0;
}
Миниатюры
Получить %appdata% юзера  
Mustang92
3 / 3 / 1
Регистрация: 24.04.2011
Сообщений: 150
14.09.2012, 23:50  [ТС]     Получить %appdata% юзера #4
к сожалению возвращает %Appdata% службы
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2012, 08:23     Получить %appdata% юзера #5
Цитата Сообщение от Mustang92 Посмотреть сообщение
к сожалению возвращает %Appdata% службы
- он возвращает APPDATA для текущего юзера, при логине под следующим юзером вернёт путь к его APPDATA.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.09.2012, 11:00     Получить %appdata% юзера #6
ExpandEnvironmentStringsForUser http://msdn.microsoft.com/en-us/library/bb762275.aspx
и
ExpandEnvironmentStrings http://msdn.microsoft.com/en-us/library/ms724265.aspx

С их же помощью можно получить все прочие пути.

Юра, ты забыл pragma(Shell32.lib) в исходнике или в библиотеки добавить её.
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2012, 11:07     Получить %appdata% юзера #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
Юра, ты забыл pragma(Shell32.lib) в исходнике или в библиотеки добавить её.
- MSVS и так всё подключит возможно DevC что то попросит, на счёт Expand ну наверное да можно, я как то и не вспомнил это вариант ExpandEnvironmentStrings, а вот эту функцию никогда не использовал ExpandEnvironmentStringsForUser - за это плюсую
Yandex
Объявления
15.09.2012, 11:07     Получить %appdata% юзера
Ответ Создать тему
Опции темы

Текущее время: 05:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru