-
использую вот эту штуку для мониторинга shell изменений: http://delphi.about.com/library/code/ncaa030403b.htmпроблема в том, что если мой процесс запущен под system (т.е. в текущей сессии пользователя, но под системной учеткой), то нотификации не приходят можно ли решить этот вопрос под системной учеткой?
-
ps: в win7 такой проблемы нет, в XP есть.
-
А у этого процесса окна вообще имеются?
-
Скорее всего не получится заставить работать SHChangeNotifyRegister под System.
Кстати, что ты мониторишь? Почти для всего есть другие методы, не используя SHChangeNotifyRegister.
-
> проблема в том, что если мой процесс запущен под system > (т.е. в текущей сессии пользователя, но под системной учеткой)
system - это мало того что не под текущей учеткой пользователя, так еще и на другом десктопе, т.е. у него не "winsta0\default", стало быть нотификации от десктопа пользователя будут идти только в рамках оного, а твой к нему никаким боком не относится. Отсюда делай вывод...
-
> system - это мало того что не под текущей учеткой пользователя, > так еще и на другом десктопе, т.е. у него не "winsta0\default" разве станция/десктоп зависит от учётки? а как же рецепты "прописываем cmd.exe в планировщик и получаем командный процессор на нашем десктопе и с системной учёткой"?
-
С "повышение привилегий" может быть, а не "системная учетка и текущий десктоп"?
-
ну… честно говоря, когда об этом читал, "повышения привилегий" ещё не было в природе (но различные десктопы были).
-
-
Странно, что у него работает под Win7, там ведь тем более не должно.
-
> DVM © (30.10.13 22:42) [9] > Странно, что у него работает под Win7, там ведь тем более > не должно.
Я не уверен в том, что в данном утверждении автор не ошибся :)
-
> А у этого процесса окна вообще имеются?
ессно, передаю его в create, а то работать не будет)
> system - это мало того что не под текущей учеткой пользователя, > так еще и на другом десктопе, т.е. у него не "winsta0\default", > стало быть нотификации от десктопа пользователя будут идти > только в рамках оного, а твой к нему никаким боком не относится. > Отсюда делай вывод...
с чего это вы взяли) этот процесс еще как работает в winsta0\default, я его сам там запускаю... его сервис запускает через CreateProcessAsUser с соответствующими параметрами, в том числе с lpDesktop := PChar('winsta0\default');
> Странно, что у него работает под Win7, там ведь тем более > не должно.
еще как должно), речь об одной и той же сессии юзера, не путаем с сервисами и нулевой сессией)
-
-
> Я не уверен в том, что в данном утверждении автор не ошибся > :)
не ошибся)
> Кстати, что ты мониторишь? Почти для всего есть другие методы, > не используя SHChangeNotifyRegister.
create\delete\rename\driveadd\driveremove
-
> его сервис запускает через CreateProcessAsUser с соответствующими > параметрами, в том числе с lpDesktop := PChar('winsta0\default');
Ну если так, то да :) Изначально то ты говорил совершенно про другое :)
Тогда поищи здесь же на форуме посты о том что запущенный из под сервиса процесс не имеет полных прав по токенам (или что-то в этом роде было) где-то полгода назад эта ветка поднималась. Лучше через зеркало delphimaster.net
-
> Rouse_ © (30.10.13 23:16) [14]
и это может касаться только xp?
-
> istok20 © (30.10.13 23:08) [13]
> create\delete\rename\
Это применительно к файлам? С этим ReadDirectoryChangesW прекрасно справляется.
-
> Это применительно к файлам? С этим ReadDirectoryChangesW > прекрасно справляется.
да, к файлам
и будет работать адекватно с WatchSubtree для мониторинга изменений во всех папках всех дисков?
а как быть с driveadd\driveremove ? тоже есть иное решение задачи?
-
> istok20 © (31.10.13 00:54) [17]
> и будет работать адекватно с WatchSubtree для мониторинга > изменений во всех папках всех дисков?
А почему нет? Можно вообще посмотреть как реализован SHChangeNotifyRegister в исходниках ReactOS или Win2000 (что на торрентах) и сделать также.
-
вот еще странная вещь, в одном проекте TSHChangeNotify присылает несколько сообщений на события, тупо дублирует их (например, несколько delete вместо одного). в то время как в других проектах работает корректно. в какую сторону копать?
|