![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
cyberovskij |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
Есть код:
который выполняется в системной службе в WINXP. При вызове GetUserAppPath какого то дьяволя возвращает "C:\Documents and Settings\LocalService\Application Data" а не того пользователя, под которым сеанс? ![]() Еще меня смущает , то что в Дельфийской реализации WTSQueryUserToken второй параметр имеет тип не указатель на Thandle (msdn PHANDLE) а THandle? Причем всюду по форумах в образцах кодов все получив от функции WTSQueryUserToken указатель на токен как это описано в мсдн(PHANDLE) сразу используют его там где нужно подставлять токен(HANDLE)? Это сообщение отредактировал(а) cyberovskij - 5.2.2011, 21:34 |
|||
|
||||
kami |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
SHGetFolderPath требует TOKEN_QUERY and TOKEN_IMPERSONATE от полученного токена.
Попробуйте использовать DuplicateToken с SecurityImpersonation для получения этих прав. Добавлено через 3 минуты и 23 секунды
ну так... там же
|
||||
|
|||||
cyberovskij |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
Вот переделал. Результат тот же
|
||||
|
|||||
cyberovskij |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
И еще я заметил что функции SHGetFolderPath вообще все равно что я пишу в третий параметр. Она всегда выдает один результат - проклатый "C:\Documents and Settings\LocalService\Application Data"
Может как то влияет то, что я использую в uses SHFolder;? Это сообщение отредактировал(а) cyberovskij - 6.2.2011, 01:15 |
|||
|
||||
cyberovskij |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
Точно!!! вот на странице с описанием функции в коментах написано: "If you are using the function from SHFolder.dll:Parameter hToken and dwFlags are ignored in the ANSI version of the function. They always become zero (0)." Вопрос теперь: Откуда ее взять и как правильно импортировать? |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Используйте Unicodу версию
![]() Изменить-то нужно всего ничего
Кстати, а какая версия Delphi? Это сообщение отредактировал(а) kami - 6.2.2011, 15:29 |
|||
|
||||
cyberovskij |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
У меня Delphi 7. Попробовал я SHGetFolderPathW вот такой код:
Выдает 'E_FAIL' - такой папки не существует ![]() |
||||
|
|||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Аналогично. Мой код(а вернее, Ваш ![]()
|
|||
|
||||
cyberovskij |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
И у меня кстати мой (вернее Ваш) код выдает: C:\Documents and Settings\user2\Application Data
![]() в чем разница?
А мой, ну тот что совсем мой - нет? Это сообщение отредактировал(а) cyberovskij - 7.2.2011, 23:04 |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Эээ, батенька.
Это что ещё такое? Ну и куда hh указывает? Правильно, в космос. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
cyberovskij |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
А как правильно с Phandle работать? |
||||
|
|||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
В данном случае - никак. Он не нужен.
Что такое PHandle? Указатель на THandle. По определению. На какой THandle? В вашем коде - ни на какой. Вы ж его не присвоили. А на какой должен указывать? Ну, на тот, куда результат записывать. Так и напишем:
Читать мат-часть. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
cyberovskij |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
P.S. кстати с PHandle это была не единственная проблема. Кроме того кривым было еще и объявление
path: array [0..MAX_PATH] of char; а нужно было path: array[0..MAX_PATH] of WideChar; Поскольку в первом случае возвращался результат: "С" вместо нужного. |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
||||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Ну всё, застремали человека
![]() -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |