Форум: "Потрепаться";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизПо какому принципу Диспетчер Задач отображает процессы? Найти похожие ветки
← →
Piter © (2005-08-22 22:24) [0]Проводим маленький следственный эксперимент.
Берем двух пользователей НЕ администраторов: User1 и User2
Логинимся под User1, в проводнике выбираем "Запуск от имени..." и запускаем что-нибудь от лица User2.
Имеем следующие эффекты
- User1 не может снять запущенный процесс (в принципе, логично)
- User2 не видит в диспетчере задач запущенного этого процесса (что уже не так логично)
В связи с чем - сабж.
Ну и дополнительный вопрос - это глюк Диспетчера Задач или действительно под обычным пользователем можно так запустить процесс, что его никак не снимешь (кроме как администратором).
Сам думаю про первое, ибо второе - уже серьезная недоделка...
← →
Игорь Шевченко © (2005-08-23 09:40) [1]Система какая ?
← →
alpet © (2005-08-23 10:31) [2]Это не глюк, а свойство системы. Process Explorer отображает все процессы, не зависимо от того, из под какого они были запущены пользователя. Если к примеру cmd запустить под user2, залогинившись под user1, он получит WindowStation = "\Windows\WindowsStations\WinSta0", а при запуске его же, залогинившись под user2 - "\Sessions\1\Windows\WindowStation\WinSta0".
Метод получения списка процессов используемый taskmgr.exe , не показывает либо системные процессы (и их дочерние - в случае использования runas - процесс запускается как дочерний svchost), либо процессы запущенные под другой станцией. Причем это ограничение исскуственное - используя ToolHelp32 функции, можно получить список все процессов.
← →
Игорь Шевченко © (2005-08-23 10:33) [3]
> Метод получения списка процессов используемый taskmgr.exe
> , не показывает либо системные процессы (и их дочерние -
> в случае использования runas - процесс запускается как дочерний
> svchost),
Ой.
← →
alpet © (2005-08-23 10:40) [4]Игорь Шевченко © (23.08.05 10:33) [3]
Точнее, если он запущен под "Пользователем", он показывает не все системные процессы, а только те что запущены в данном сеансе. Например - Winlogon и CSRSS.
← →
Игорь Шевченко © (2005-08-23 10:41) [5]alpet © (23.08.05 10:40) [4]
> Точнее, если он запущен под "Пользователем", он показывает
> не все системные процессы, а только те что запущены в данном
> сеансе. Например - Winlogon и CSRSS.
Ой.
← →
alpet © (2005-08-23 10:46) [6]Что здесь ужасного? :)
← →
alpet © (2005-08-23 10:52) [7]Вот кстати вопрос, как можно сделать, чтобы процесс мог запускаться только в одном экземпляре, с учетом того что его могут запустить в любом сеансе (т.е. события в данном случае не панацея)?
← →
Игорь Шевченко © (2005-08-23 10:55) [8]alpet © (23.08.05 10:46) [6]
> Что здесь ужасного? :)
Я просто пытаюсь понять, в какой операционной системе происходит описанное тобой.
← →
Skyle © (2005-08-23 10:55) [9]> (т.е. события в данном случае не панацея)?
Ой (с) Игорь Шевченко
← →
Игорь Шевченко © (2005-08-23 10:56) [10]alpet © (23.08.05 10:52) [7]
> Вот кстати вопрос, как можно сделать, чтобы процесс мог
> запускаться только в одном экземпляре, с учетом того что
> его могут запустить в любом сеансе (т.е. события в данном
> случае не панацея)?
1. Причем тут событие (может, мьютекс имелся в виду) ?
2. Задать имя мьютекса с префиксом "Global\" Коран вроде позволяет.
← →
Skyle © (2005-08-23 11:02) [11]> 1. Причем тут событие (может, мьютекс имелся в виду) ?
Да это без разницы, можно и событие...
← →
Игорь Шевченко © (2005-08-23 11:03) [12]Skyle © (23.08.05 11:02) [11]
> Да это без разницы, можно и событие...
Ой.
← →
Skyle © (2005-08-23 11:05) [13]
> [12] Игорь Шевченко © (23.08.05 11:03)
Platform SDK: Terminal Services
Kernel Object Namespaces
Terminal Services server has multiple namespaces for the following named kernel objects: events, semaphores, mutexes, waitable timers, file-mapping objects, and job objects
...................
The separate client session namespaces enable multiple clients to run the same applications without interfering with each other. For processes started under a client session, the system uses the session namespace by default. However, these processes can use the global namespace by prepending the "Global\" prefix to the object name. For example, the following code calls CreateEvent and creates an event object named CSAPP in the global namespace:
CreateEvent( NULL, FALSE, FALSE, "Global\\CSAPP" );
Может я чего не понимаю?
← →
alpet © (2005-08-23 11:08) [14]Круто, буду знать. На будущее, все вышеозначенное происходило под Windows 5.1 Edition Pro (Russian) (build 2600.xpsp1.020828-1920 : Service Pack 1).
← →
Игорь Шевченко © (2005-08-23 11:09) [15]Skyle © (23.08.05 11:05) [13]
> Может я чего не понимаю?
Наверное. Приведен пример создания события, но причем здесь запрет запуска второй копии приложения из другого сеанса ?
← →
Игорь Шевченко © (2005-08-23 11:10) [16]alpet © (23.08.05 11:08) [14]
Поставь гайку "Show Process from all users" и будет тебе счастье.
hint: Task Manager - он не только в XP
← →
Skyle © (2005-08-23 11:11) [17]> [15] Игорь Шевченко © (23.08.05 11:09)
А, я понял в чём дело...
Я говорил не о том, как запретить запуск второй копии (что правильнее - мутекс или что-то ещё), я говорил о том, что событие можно сделать видимым глобально и что это сделать можно...
← →
alpet © (2005-08-23 11:16) [18]Однако код будет иначе выглядеть в случае использование "Global\EventName" - в случае попытки запуска процесса из другого сеанса, будет возвращатся не ERROR_ALREADY_EXISTS (183), а ERROR_ACCESS_DENIED. Так что обработка значительно усложняется ))
← →
alpet © (2005-08-23 11:20) [19]Игорь Шевченко © (23.08.05 11:10) [16]
Это CheckBox "Отображать процессы всех пользователей"? Он выставлен когда под админом taskmgr запускается, а когда под пользователем - он disabled (grayed). Впрочем мне это не мешает, поскольку pslist + pskill удобнее будут, а для наблюдения за деятельностью процессов можно и Process Explorer запустить.
← →
Skyle © (2005-08-23 11:32) [20]> Однако код будет иначе выглядеть в случае использование > "Global\EventName" - в случае попытки запуска процесса из
> другого сеанса, будет возвращатся не ERROR_ALREADY_EXISTS
> (183), а ERROR_ACCESS_DENIED.
Откуда дровишки?
Есть подозрение, что ответ (результат) будет зависеть от того, какой секьюрный контекст ты ему дашь. Что-то я не видел никакого запрета на доступ к глобальному namespace"у, а значит всё будет определяться только атрибутами безопасности самого объекта...
← →
alpet © (2005-08-23 11:39) [21]Skyle © (23.08.05 11:32) [20]
Из лесу вестимо. Что значит все подефолту - nil, или если угодно NULL. Но таки это не отменяет расширенного анализа кода ошибки?
// Небезопасная функция. Применять только с осмыслением.
function ExGlobalEventHalt (const name: string): THandle;
var h: THandle;
begin
h := CreateEvent (nil, true, false, PChar ("Global\" + name));
if h = 0 then Halt;
if (GetLastError <> 0) then begin CloseHandle (h); Halt; end;
result := h;
end; // ExGlobalEvent
← →
Skyle © (2005-08-23 12:01) [22]> [21] alpet © (23.08.05 11:39)
> Что значит все подефолту - nil, или если угодно NULL
If lpName matches the name of an existing named event object, this function requests the EVENT_ALL_ACCESS access right. In this case, the bManualReset and bInitialState parameters are ignored because they have already been set by the creating process. If the lpEventAttributes parameter is not NULL, it determines whether the handle can be inherited, but its security-descriptor member is ignored.
Почему бы не дать своему event"у желаемый EVENT_ALL_ACCESS и не мучаться странными и лишними обработками?
← →
alpet © (2005-08-23 13:21) [23]Skyle © (23.08.05 12:01) [22]
Вон как все просто оказывается, а никак не мог догадаться почитать документацию.
← →
Piter © (2005-08-23 15:45) [24]Игорь Шевченко © (23.08.05 9:40) [1]
Система какая ?
WindowsXP SP2.
Но мне почему-то кажется, что на других ОС будет аналогично.
Игорь Шевченко © (23.08.05 11:10) [16]
Поставь гайку "Show Process from all users" и будет тебе счастье.
Я говорид:
двух пользователей НЕ администраторов
← →
Игорь Шевченко © (2005-08-23 15:49) [25]Piter © (23.08.05 15:45) [24]
> Но мне почему-то кажется, что на других ОС будет аналогично.
Не будет
← →
Piter © (2005-08-23 16:18) [26]Игорь Шевченко © (23.08.05 15:49) [25]
Не будет
вы про то, что на w2k нету мультилогина?
← →
Игорь Шевченко © (2005-08-23 16:54) [27]Piter © (23.08.05 16:18) [26]
Тебе поспорить хочется ? Почитай Руссиновича с Соломоном, они твой случай как раз рассматривают. После этого можем продолжить дискуссию.
← →
Piter © (2005-08-23 18:26) [28]Игорь Шевченко © (23.08.05 16:54) [27]
странная реакция какая-то.
Я не спорил, я просто спросил:
вы про то, что на w2k нету мультилогина?
Я не понял вашего ответа и поэтому хотел, чтобы вы уточнили. Чего сразу кусаться-то...
← →
DiamondShark © (2005-08-23 18:40) [29]
> Игорь Шевченко © (23.08.05 16:54) [27]
> Почитай Руссиновича с Соломоном
Книга, глава, стих?
В смысле, что именно? Давно хочу что-нибудь такое почитать, а вот что именно купить -- не знаю.
← →
alpet © (2005-08-23 18:43) [30]Скоро новое издание выйдет (у меня уже есть оно, но в на языке оригинала, все не досуг глянуть), куплю бумажную версию.
← →
Piter © (2005-08-23 18:46) [31]DiamondShark © (23.08.05 18:40) [29]
смысле, что именно? Давно хочу что-нибудь такое почитать, а вот что именно купить -- не знаю
дык известно что: http://shop.piter.com/book/978531800545/
Книжка Must Have, но очень сложная.
← →
Piter © (2005-08-23 18:47) [32]alpet © (23.08.05 18:43) [30]
Скоро новое издание выйдет
странно. Ведь это - 2004 года. Каждый год что ли переиздают...
← →
alpet © (2005-08-23 21:00) [33]Piter © (23.08.05 18:47) [32]
Перевод на русском должен только в этом году появится вроде. Так то 4 издание еще в октябре прошлого года вышло.
← →
Piter © (2005-08-23 21:27) [34]alpet © (23.08.05 21:00) [33]
ну я и говорю:
Каждый год что ли переиздают...
← →
Piter © (2005-08-24 17:04) [35]Игорь Шевченко © (23.08.05 16:54) [27]
не ответите на вопрос:
Piter © (23.08.05 18:26) [28]
вы про то, что на w2k нету мультилогина?
или про что? Что такое поведение только у XP"шного диспетчера задач? Или только у XP2?
Объясните, плиз.
← →
Игорь Шевченко © (2005-08-24 17:38) [36]Piter © (24.08.05 17:04) [35]
Я не понимаю вопроса, поэтому не отвечаю. Если не затруднит, поясни его.
← →
Игорь Шевченко © (2005-08-24 17:43) [37]DiamondShark © (23.08.05 18:40) [29]
Книга: "Внутреннее устройство Windows 2000", глава, по-моему, "Безопасность", стиха не помню, книжка дома :)
← →
Piter © (2005-08-24 17:56) [38]Игорь Шевченко © (24.08.05 17:38) [36]
Я не понимаю вопроса, поэтому не отвечаю
Вы сказали, что в других ОС этого не будет.
А чего не будет? Там менеджер задач второго пользователя все таки отобразит искомый процесс, или система позволит первому пользователю снять процесс?
Описанное в [0] поведение - это особенно WindowsXP? Всех редакций?
В Windows 2000 и 2003 такого нет?
← →
Игорь Шевченко © (2005-08-24 17:58) [39]Piter © (24.08.05 17:56) [38]
> Там менеджер задач второго пользователя все таки отобразит
> искомый процесс
Да.
> система позволит первому пользователю снять процесс?
Нет.
> Описанное в [0] поведение - это особенно WindowsXP? Всех
> редакций?
Скорее всего.
> В Windows 2000 и 2003 такого нет?
В Windows 2000 нет, в 2003, скорее всего есть.
← →
Piter © (2005-08-24 18:22) [40]Игорь Шевченко © (24.08.05 17:58) [39]
В Windows 2000 нет, в 2003, скорее всего есть
ага, кажется понял. Начиная с WinXP менеджер задач не показывает "свои" процессы, которые были запущены "не своим" процессом?
Сори за кривость фразы :)
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.011 c