|
|
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
Доброго дня! Есть одна любопытная, и, с первого взгляда, несложная задача, но никак не могу ее решить. Приложение (на Delphi xe10) запускается под виндовым пользователем "Пользователь 1", есть некая папка, доступ к которой разрешен только для пользователя "Системный пользователь". Как сделать так, что бы при сохранении файла через приложение, функция LoadFromStream вызывалась от имени "Системный пользователь"? Т.е. из системы пользователь не имеет возможность класть файлы в папку, а через приложение может. Помогите пожалуйста, знатоки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 18:44:31 |
|
||
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
DastiX, никак... права даются всему приложению... Для этого надо из кода запустить копию приложения под нужными права через runas и уже оттуда делать нужные действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 19:16:43 |
|
||
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
DastiX, Сделай сервис, который ставится при установке приложения и запускается от имени того пользователя который может писать в нужную папку, а из приложения передавай ему что и куда сохранить (через named pipes или ещё как). Только в самом сервисе ограничь места/имена файлов куда он может писать и сделай проверку на то что к нему обращается авторизированное приложение, иначе это может получиться такая себе дыра в безопасности, особенно если тот пользователь с админскими правами :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 19:40:10 |
|
||
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
JaDiDastiX, никак... права даются всему приложению... Для этого надо из кода запустить копию приложения под нужными права через runas и уже оттуда делать нужные действия. Не очень удачный вариант, потому что тогда в приложении необходимо хранить пароль того пользователя, а значит его можно вытащить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 19:40:52 |
|
||
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
JaDi, Увы, Вы неправы. Сам разобрался. Кому интересно, делается это через Winapi'шные функции: ImpersonateLoggedOnUser, RevertToSelf Пример: Доступ к папке "D:\12345" настроен только для пользователя "SuperUser" Приложение запускается от пользователя "User". У меня все работает на ура. Спасибо http://www.delphibasics.info Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 19:45:32 |
|
||
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
alekcvp, Возможно, но вероятность, что кому-то будет интересен этот пароль - нулевая. Это задача реализует примитивную защиту файлов, которые сохраняются и просматриваются через специфичное приложение, от вирусов-шифровальщиков. Файлов много, пользователей много. Если не сделать так, то получается они все доступны для всех со всеми вытекающими. А тут, элегантно и непринужденно, убирается куча лишнего неожиданного геморроя) Спасибо всем за внимание, тему можно закрывать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 19:52:17 |
|
||
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
добавь CloseHandle(TokenHandle) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2017, 22:14:36 |
|
||
|
Изменение прав доступа в коде
|
|||
|---|---|---|---|
|
#18+
Mr.Pavel, в каком именно месте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2017, 23:27:13 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39514518&tid=2041868]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
194ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 534ms |

| 0 / 0 |
