путь к корзине Windows?

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 22 апр 2007.

  1. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    На сайте есть ntifs.h - там описание функций библиотеки ntdll.dll.
    ЮЗАЙ FASM!
    Еще
    NtQueryInformationToken~advapi32.GetTokenInformation
     
  2. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Нужно для masm23.
     
  3. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
  4. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    Ай, опоздал. Под масм не сложно переделать. Подключай advapi32. Там есть аналог ConvertSidToStringSid(sid,ppSidResult)
    Второй параметр указывает на переменную, которая получит адрес строки.
     
  5. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Получается, примерно, следующее.

    LOCAL hToken:lol: WORD
    LOCAL tu_size:lol: WORD
    LOCAL string:lol: WORD

    invoke GetCurrentProcess
    invoke OpenProcessToken,eax,TOKEN_QUERY,hToken
    invoke GetTokenInformation,hToken,TokenUser,0,0,addr tu_size
    invoke ConvertSidToStringSid,TokenUser,addr string

    Ошибок не выдаёт. Но и нужной строки тоже не выдаёт.
    Как правильно?
     
  6. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    OpenProcessTojen,..., ADDR hToken
    Потом именно два вызова GetTokenInformation: после первого получаем количество байтов под структуру USER_TOKEN, заполняемую вторым вызовом
    В вызове ...Convert... первый параметр- TOKEN_USER.User.Sid
    Адрес в примере на эту структуру в edi
     
  7. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    Адрес ессно после первого выделения памяти
    ----
    Добей задачу до конца-с Token часто прийдется работать, например для вырубания компа :)
     
  8. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    Забыл сказать, полученная строка будет в UNICODE формате :derisive:
     
  9. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    vg
    1) Последний параметр OpenProcessToken - указатель на HANDLE, который потом надо CloseHandle;
    2) третий параметр GetTokenInformation - указатель на область памяти в которую будет заполнена структура TOKEN_USER;
    3) четвертый параметр GetTokenInformation - размер области памяти адрес которой передан в третьем параметре;
    4) не понятно что ты передаешь в качестве первого параметра в ConvertSidToStringSid.

    Как правильно?
    Примерно так
    Код (Text):
    1. local hToken : dword;
    2. local buf[1024] : byte;
    3. local string : dword
    4. local tu_size : dword
    5.  
    6. invoke GetCurrentProcess
    7. mov ecx,eax
    8. mov hToken,0
    9. invoke OpenProcessToken, ecx, TOKEN_QUERY, addr hToken
    10. or eax,eax
    11. jz error
    12. invoke GetTokenInformation, hToken, TokenUser, addr buf, 1024, addr tu_size
    13. or eax,eax
    14. jz error
    15. mov ecx,dword ptr buf
    16. mov string,0
    17. invoke ConvertSidToStringSid, ecx, addr string
    18. or eax,eax
    19. jz error
    20. cmp string,0
    21. jz error
    22. invoke MessageBox, 0, string, 0, 0
    23. invoke LocalFree, string
    24.  
    25. ...
    26.  
    27. error:
    28. cmp hToken,0
    29. jz @F
    30. invoke CloseHandle, hToken
    31. @@:
    ps Imho зря копаешь в эту сторону. Этот метод не даст название основой папки.
     
  10. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    dr_dred
    строка будет в UNICODE формате
    Не правда.
     
  11. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    q_q
    Хе-хе. Да, кстати. Просто по привычке win32wxp подключаю
    А что значит "не даст название основной папки"? У меня все работает нормально
     
  12. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    dr_dred
    А что значит "не даст название основной папки"?
    Заголовок темы - "путь к корзине Windows".
    Ты подсказал как найти имя _подпапки_.
    Afaik на FAT32 в корзине разделения по подпапкам пользователей нет.
     
  13. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    В ниже следующем коде MessageBox №1 показывает правильную строку, а после её присоединения к строке text в MessageBox №2 появляются text+какие-то каракули.

    Как исправить?

    invoke GetCurrentProcess
    mov ecx,eax
    mov hToken,0
    invoke OpenProcessToken, ecx, TOKEN_QUERY, addr hToken
    or eax,eax
    jz error
    invoke GetTokenInformation, hToken, TokenUser, addr buf, 1024, addr tu_size
    or eax,eax
    jz error
    mov ecx,dword ptr buf
    mov string,0
    invoke ConvertSidToStringSid, ecx, addr string
    or eax,eax
    jz error
    cmp string,0
    jz error
    invoke MessageBox,0,string,0,0 ;№1
    invoke LocalFree,string
    error:
    invoke CloseHandle, hToken

    invoke lstrcat,addr text,addr string
    invoke lstrlen,text
    invoke MessageBox,0,addr text,0,0 ;№2
     
  14. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    vg
    1) переменная string содержит адрес строки, а не строку, поэтому в lstrcat надо передавать string, а не addr string;
    2) после MessageBox №1 используется LocalFree, поэтому дальнейшее обращение к string не корректны.
     
  15. kodred

    kodred New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2009
    Сообщения:
    1
    Я не понял, вы что хотите найти путь к корзине с помощю WASM или какимито другими сложными путями? если вам подойдёт простейший способ найти путь к корзине то могу поделится советом, я по русски плохо пишу, но надеюсь вы поймёте =) я делал это в ХР, там в контроль панели есть "настройки папки или свойства папки", там вроде есть вкладка "вид" или что то в этом роде, там где много галочек =)

    Так вот, попробуйте:

    1. УБРАТЬ галочку с "спрятать защищёные файлы оперативной системы"
    2. ПОСТАВИТЬ галочку на "показывать содержимое системных папок"
    3. проверить можно ли дойти до корзины через explorer примерно по такому пути: D:\RECYCLER\S-1-5-21-796845957-1417001333-1177238915-500

    я не знаю что такое WASM поэтому зарание прошу прощение за флуд если недoпонял вопрос темы и за мой русский =)

    всем щастъя!
     
  16. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ух ты, неплохой русский для .. европейца? акцент-то не снгшный, а, скорее, европейский.
    ..угадал? .D
     
  17. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    нда... археологи блин :)
     
  18. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ты с наме .D