Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1 2 След.
RSS
Приоритет NTVDM.EXE ?
 
Привет!

На моем компе постоянно нужно крутить ДОС-овые задачки, которые, как известно, жрут немерянное количество процессорных ресурсов. Чтобы комп не засыпал в этих случаях - я ставлю приоритет на "низкий" или "ниже среднего" из менеджера задач для NTVDM. Но ломает каждый раз делать это ручками. Есть ли способ раз и на всю оставшуюся жизнь присвоить приоритет задаче? В данном случае пониженный.
Спасибо за внимание
 
start /low "program"
 
Ну хорошо. Настроил я любимый мой FAR на использование такого рода конструкции для определенных расширений файлов и некоторых ехе-шников. Однако есть еще и ярлыки на рабочей доске - а вот они ни фига не хотят так строится (ошибка в PIF тра-ла-ла).

А основной вопрос все-таки остался - можно ли присвоить в Винде произвольному процессу произвольный приоритет на вечные времена?
 
Попробуй в HKLM\System\CurrentControlSet\Control\WOW\cmdline заменить '%SystemRoot%\system32\ntvdm.exe' на 'start /low "%SystemRoot%\system32\ntvdm.exe"'. Или написать враппер к ntvdm.exe который просто запускает старый экзешник с пониженным приоритетом.

;------
;NK
 
Спасибо, попробую.
 
Попробовал с реестром - не катит. То есть программа не запускается. Сообщение типа "Не удается найти файл C:\PRO\PEO\PEOP.EXE."
 
значит путь указал неправильно
 
Цитата
TeckLord пишет:
значит путь указал неправильно
Смеешься, да ? Я этот путь лет десять юзаю.
В реестре ставил такие варианты:
%SystemRoot%\system32\ntvdm.exe  - работает
start /low %SystemRoot%\system32\ntvdm.exe - не работает
start /low "%SystemRoot%\system32\ntvdm.exe" - не работает
 
Значит пиши враппер или пропатчь ntvdm.exe

;--------
;NK
 
а стартовать ntvdm.cmd батничек слабо, в котором будет уже

start /low %SystemRoot%\system32\ntvdm.exe

а?
 
Сделал батничек. Вот результат:

The FAR manager, version 1.70 beta 2 (build 321)
Copyright © 1996-2000 Eugene Roshal, Copyright © 2000 FAR Group
Зарегистрирован: xUSSR регистрация
C:\PRO\PEO>PEOP.EXE

C:\PRO\PEO>start /low C:\WINNT\system32\ntvdm.exe -f

C:\PRO\PEO>

Визуально сие проявляется в мгновенном появлении и исчезновении некоего окошка
 
попробуй вместо:
 start /low C:\WINNT\system32\ntvdm.exe -f
вот так:
 cmd.exe /c start /low C:\WINNT\system32\ntvdm.exe -f
ибо start не программа, а внутренняя команда cmd.exe.
 
Блин, только сейчас прочетал прочитал тред с начала.
Вы что человеку мозги парите, гуры?


start /LOW c:\WINNT\system32\command.com /C programm.com
 
2IgorR: кстати, тут припомнилось. Посмотри на проги TimeSlice и resfree.com -- они служат как раз для того, чтобы NTVDM весь проц не кушал.
Прописываешь любую из них в autoexec.nt и при запуске NTVDM она автоматически запустится и будет висеть резидентом в памяти вирутальной дос-машины.
 
Увы, и эти способы не работают (не совсем работают):

cmd.exe /c start /low C:\WINNT\system32\ntvdm.exe -f  - файл не найден
start /LOW c:\WINNT\system32\command.com /C programm.com  - 1) если набирать из консоли - отрабатывает, а если прописывать в реестр на запуск NTVDM - "программа не является Win32"
 
IgorR...
Что тебе мешает создать файлики

дос_программа_1.cmd
....
дос_программа_n.cmd

в них прописать

start /LOW command.com /C programm1.com
....
start /LOW command.com /C programmn.com

и прописать многа мегаярлыков на рабочем столе?
Куда ты в реестр лезешь? Зачем? Одна таска от этого реестра. И печаль. И грусть...
 
Цитата
asu4ka пишет:
IgorR...
Что тебе мешает создать файлики

дос_программа_1.cmd
....
дос_программа_n.cmd

в них прописать

start /LOW command.com /C programm1.com
....
start /LOW command.com /C programmn.com

и прописать многа мегаярлыков на рабочем столе?
Куда ты в реестр лезешь? Зачем? Одна таска от этого реестра. И печаль. И грусть...

Да, собственно, ничего не мешает. Однако вопрос, ИМХО, уже вышел за рамки чисто практических интересов. И перешел в область интересов просто. Любопытства, если хотите.

Спасибо за обсуждение всем. Если вдруг еще какие-нибудь мысли появятся - черкните.
 
единственное что пришло с ходу в голову, держать постоянно запущенным ntvdm с низким приоритетом, так виндоза при его наличии запущенного использует его, а не делает новый.
хотя что будет если запускать две досовские задачи не пробовал, и кроме того через какое-то время ntvdm исчезает как мне кажется.

DOS lives forever =)
 
Цитата
Joky пишет:
единственное что пришло с ходу в голову, держать постоянно запущенным ntvdm с низким приоритетом, так виндоза при его наличии запущенного использует его, а не делает новый.
хотя что будет если запускать две досовские задачи не пробовал, и кроме того через какое-то время ntvdm исчезает как мне кажется.

DOS lives forever =)

На каждую ДОС задачу запускается свой.
 
Проблему удалось решить довольно примитивным патчем. Берем ntvdm.exe
В конец .text секции (там где нули идут) дописываем:
Call GetCurrentProcess
push 0x40
push eax
Call SetPriorityClass
Call _old_entry_point

В моем случае (NT40SP6) это выглядит так:
FF154420050F
6A40
50
FF15E820050F
E884D0FBFF
В случае другого билда офсеты считай сам :)
Потом переписываем entry_point в хедере на начало нашего кода. И телемаркет - любая досовская задача стартует с пониженным приоритетом.
PS: Хотя меня не оставляют мысли о том что это можно было сделать каким-то более "легитимным" образом :-/

;--------
;NK
Страницы: 1 2 След.
Читают тему