Привет. нужно при старте приложения запустить себя же повторно (с определенными параметрами) так, что в памяти будет все время 2 копии моего приложения. но хочется сделать так, чтобы процессы имели отличные друг от друга названия. как такое можно сделать?
в голову приходит только вариант переименовать на время старта 2й копии файл, запустить и вернуть обратно. может есть какие-то более гуманные способы?
Re: Как можно изменить имя процесса
От: | Аноним |
Дата: | 12.06.08 19:16 |
Оценка: |
Здравствуйте, sax0n, Вы писали:
S> хочется сделать так, чтобы процессы имели отличные друг от друга названия. как такое можно сделать?
1. Тупейший вариант:
Пусть инсталлятор кладёт 2 копии файла — program1.exe и program2.exe
2. Продвинутый вариант (только для NTFS):
Пусть инсталлятор создаёт для program1.exe hardlink с именем program2.exe. Преимущество — не тратится лишнее дисковое пространство (вдруг program1.exe весит пару гиг? )
Массовое переименование файлов в Windows
3. Оптимальный вариант:
Копируем себя в %TEMP% под нужным именем, запускаемся (не забываем в CreateProcess передать верный Current Directory etc, а то мало ли).
4. Хеккерский вариант:
Пробуем шаманить с PEB.
Re[2]: Как можно изменить имя процесса
От: | anc |
Дата: | 12.06.08 20:09 |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>2. Продвинутый вариант (только для NTFS):
А>Пусть инсталлятор создаёт для program1.exe hardlink с именем program2.exe. Преимущество — не тратится лишнее дисковое пространство (вдруг program1.exe весит пару гиг? )
имена процессов будут одинаковы
Re[3]: Как можно изменить имя процесса
От: | _Ursus_ | |
Дата: | 12.06.08 22:59 | |
Оценка: | +2 |
Еще раз — нет в винде такого понятия, как «имя процесса». Процесс — это НЕИМЕНОВАННЫЙ объект.
Re[4]: Как можно изменить имя процесса
От: | sax0n |
Дата: | 13.06.08 05:12 |
Оценка: |
Здравствуйте, _Ursus_, Вы писали:
_U_>Еще раз — нет в винде такого понятия, как «имя процесса». Процесс — это НЕИМЕНОВАННЫЙ объект.
Подразумевается только имя в списке диспетчера задач. варианты с копированием куда-либо не подходят в результате файл должен быть один.
А можно подробнее с PEB? что и как там? может есть ссылочка на маны?
Вопрос еще вот такой. вариант с временным переименовыванием файла может привести к ексепшну?
Как правильно запускать читы | Обход защиты в онлайн играх
1. запускаю процесс
2. переименовавыю имя своего файла, с которого запущен
3. запускаю его
4. переименовываю обратно.
Правда этот вариант не нравится еще и тем, что памяти жрет столько же, сколько и основной модуль.
.безопасно ли создавать свои процессы в памяти, как это описано в статье на РСДН? кто-то пробывал на Висте, НТ?
Re[5]: Как можно изменить имя процесса
От: | Аноним |
Дата: | 13.06.08 07:34 |
Оценка: |
S>Подразумевается только имя в списке диспетчера задач. варианты с копированием куда-либо не подходят в результате файл должен быть один.
S>А можно подробнее с PEB? что и как там? может есть ссылочка на маны?
То что показывает Task Manager в имени процесса не из PEB’а береться, а из EPROCESS’а
S>Вопрос еще вот такой. вариант с временным переименовыванием файла может привести к ексепшну?
S>1. запускаю процесс
S>2. переименовавыю имя своего файла, с которого запущен
S>3. запускаю его
S>4. переименовываю обратно.
Все должно быть ОК. НО, софт надо писть так чтобы например внезапный сбой (или перезагрузка винды) не приводила к его в неработоспособное состояние. Что сделает тупая американская домохозяйка если основной ехешник вдруг «потеряется»?
Re[6]: Как можно изменить имя процесса
От: | x64 | http://x64blog.name |
Дата: | 13.06.08 11:37 | |
Оценка: |
А>То что показывает Task Manager в имени процесса не из PEB’а береться, а из EPROCESS’а
Да ну? Уж не то ли имя, которое в поле ImageFileName хранится?
Re[7]: Как можно изменить имя процесса
От: | Аноним |
Дата: | 14.06.08 00:45 |
Оценка: |
А>>То что показывает Task Manager в имени процесса не из PEB’а береться, а из EPROCESS’а
x64>Да ну? Уж не то ли имя, которое в поле ImageFileName хранится?
То самое. Именно его выдает NtQuerySystemInformation при перечислении процессов. А вот имямодуля в PEB можо легко изменить, но на TM это влияние не окажет
Re[8]: Как можно изменить имя процесса
От: | x64 | http://x64blog.name |
Дата: | 14.06.08 07:27 | |
Оценка: |
А>>>То что показывает Task Manager в имени процесса не из PEB’а береться, а из EPROCESS’а
x64>>Да ну? Уж не то ли имя, которое в поле ImageFileName хранится?
А>То самое.
Хорошо, вопрос: имя модуля процесса в ImageFileName ограничено 8 символами, тогда почему Диспетчер задач всё равно отображает полное имя, а не урезанное?
Re[9]: Как можно изменить имя процесса
От: | sax0n |
Дата: | 15.06.08 08:37 |
Оценка: |
Где-то тут было описано штук 5 способов получения списка процессов. поэтому, думаю, метод с подменой некоторого поля в одной из структур процесса не подходит (
вообще вот зачем это все нужно: нужно читать с некоторой периодичностью cookie, включая те, которые в Vista в Low-папке (ограниченные права).
Вот здесь лежит моя статейка по изучению данного вопроса.
Суть — чтобы прочитать Low-куки нужно работать из процесса/потока, который запущен с low-привилегиями. При этом условие — программа должна сама работать из-под админа.
Хороший вариант — создать поток и из него работать, но библиотека WinInet, с помощью которой читаются куки, не поддерживает имперсонализацию.
В общем нужно создавать процесс отдельный процесс и читать через него.
Методика синхронизации и вообще рабочий полный пример лежит по ссылке. но там программа запускает сама себя 1 один раз, синхронизирует данные и выгружает вторую копию.
а мне нужно сейчас, чтобы данные постоянно синхронизировались с главной программой (каждые Н секунд). и поэтому второй процесс не будет выгружаться. и этот второй процесс нужно назвать как-то иначе.
Конечно есть вариант каждые Н секунд просто запускать второй процесс и выгружать его. но ведь это не кошерно
Буду признателен за новые мысли по этому поводу.
Re: Как можно изменить имя процесса
От: | CTpaHHoe | http://ctpahhoe.blogspot.com/ |
Дата: | 16.06.08 11:12 | |
Оценка: |
Здравствуйте, sax0n, Вы писали:
S>но хочется сделать так, чтобы процессы имели отличные друг от друга названия.
зачем? мне непонятен смысл проблемы, думаю и остальным тоже.
Re: Как можно изменить имя процесса
От: | sax0n |
Дата: | 16.06.08 19:37 |
Оценка: |
Такое предчувствие, что обсуждение вариантов прекратилось из-за последнего поста.
Приложение не является вредоносным. даже напротив.
Re[2]: Как можно изменить имя процесса
От: | sax0n |
Дата: | 16.06.08 19:40 |
Оценка: |
Здравствуйте, sax0n, Вы писали:
Я описал проблему: нужно регулярно проверять состояние куков в системе. данный хитрости делаются для того, чтобы считывать только те печенька, что под Low.
В целом — это способ взаимодействия системы.
Re[3]: Как можно изменить имя процесса
От: | x64 | http://x64blog.name |
Дата: | 16.06.08 21:24 | |
Оценка: | +1 |
S>Я описал проблему: нужно регулярно проверять состояние куков в системе. данный хитрости делаются для того, чтобы считывать только те печенька, что под Low.
S>В целом — это способ взаимодействия системы.
Ничего не понятно. И я, честно говоря, не могу придумать зачем может понадобится считывать «не свои» куки. Попахивает кривым дизайном.
Re[4]: Как можно изменить имя процесса
От: | sax0n |
Дата: | 17.06.08 15:31 |
Оценка: |
Здравствуйте, x64, Вы писали:
А кто вам сказал, что они не свои? )
они очень даже свои. только ставит их не программа моя.
Архитектура тут даже не обговаривается со всем уважением ко всем собеседникам..
все уже давно решено и продумано. просто интересует именно вот эта маленькая деталь
Источник: www.rsdn.org
Как переименовать процесс на windows, используя python?
Чтобы обновить имя процесса в окне консоли, вам необходимо использовать функцию Windows API SetConsoleTitleW, которая позволяет изменять заголовок окна консоли. Для использования этой функции в Python можно использовать библиотеку pywin32.
import os import psutil import time import win32api pid = os.getpid() print(pid) new_name = ‘asdfff’ p = psutil.Process(pid) p.name = new_name # Обновляем заголовок окна консоли win32api.SetConsoleTitleW(new_name) print(p.name) time.sleep(6000)
Макс,
maus_9999, видимо у вас новая версия win32api, там атрибут заменен был на другую
пробуйте это:
import os import psutil import time import win32api pid = os.getpid() print(pid) new_name = ‘asdfff’ p = psutil.Process(pid) p.name = new_name # Обновляем заголовок окна консоли win32api.SetConsoleTitle(new_name) print(p.name) time.sleep(6000)
Макс, в коментарии выше я уже попробовал, но имя процесса все равно не менятеся в кончоли(
maus_9999, какая у вас версия pywin32?
Попробуйте установить более новую версию pywin32, выполнив команду pip install pywin32 в терминале
Макс, Если установка новой версии pywin32 не помогает, попробуйте обновить свою версию Python или операционной системы. Возможно, функция SetConsoleTitle не поддерживается на вашей текущей версии Python или операционной системы.
Проверьте, поддерживается ли функция вообще:
import sys import os if sys.platform == ‘win32’: try: import win32api import win32console except ImportError: print(‘win32api и/или win32console не установлены’) else: if hasattr(win32console, ‘GetStdHandle’) and hasattr(win32api, ‘SetConsoleTitle’): print(‘Функция SetConsoleTitle поддерживается в вашей операционной системе’) else: print(‘Функция SetConsoleTitle не поддерживается в вашей операционной системе’) else: print(‘Вы используете операционную систему, которая не поддерживает функцию SetConsoleTitle’)
Источник: qna.habr.com
Как я могу запустить процесс и дать ему другое имя в диспетчере задач через пакетный скрипт?
У меня есть командный файл, который выглядит следующим образом:
cd C:SomeFolder wperl SomePerlScript.pl %* exit 0
Он в основном разработан для того, чтобы обойти тот факт, что perl.exe оставляет раздражающее окно командной строки, плавающее на моем рабочем столе; Я хочу, чтобы этот скрипт работал в фоновом режиме, не мешая мне.
Но когда я делаю это, в диспетчере задач вместо имени скрипта появляется «wperl.exe». Есть ли способ присвоить процессу собственное имя, чтобы я мог запомнить, что это такое, и не допустить путаницы с другими процессами wperl.exe, которые я мог бы запустить?
задан ekolis 179