Ako nastaviť prioritu procesu natrvalo ?

Diskuze výhradně o operačním systému Windows 7

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod mariank 5. 12. 2009 18:13

Vo Windows Task Manageri viem zmeniť prioritu určitého procesu.
Ale ako to urobiť natrvalo, napr. aj po reštarte resp. vypnutí pc, aby som to stále
nemusel manuálne vždy nastavovať.

Skúsil soft Prio - Priority Saver, ale ten nefunguje...
V ini-súbore je to správne uložené, ale nenastaví sa to tak.
mariank
Junior

Odeslat příspěvekod Milanr1 5. 12. 2009 18:20

V OS WNT řady 6.1 je poprvé v historii tato možnost (konečně!!) po letech připomínkování betatesterů zabudována do Task Manageru:
karta Processes
pravomyš na proces
Set priority
a volba dole: Save priority
Btw:
Utilitka Prio fungovala v dřívějších verzích OS WNT.
Milan
Milanr1
Pokročilý
Uživatelský avatar

Odeslat příspěvekod tibika 5. 12. 2009 18:30

To je zvlastne, ja tam taku volbu nemam, su tam len moznosti samotnej priority, bez moznosti ulozit... (w7 x64 CZ)

Aspon takto to ide (trochu zlozitejsie, ale ide)

nech teda chcem zmenit prioritu programu spustaneho cez
C:\program\prog.exe

vytvorim (napr. v notepade) subor prog.bat s obsahom
cmd /c start /HIGH prog.exe

a tento subor dam do zlozky C:\program (t.j. k povodnemu .exe)
(miesto /HIGH moze byt aj /AboveNormal, /Normal, /BelowNormal, /Low)


No a teraz bud priamo spustim ten subor prog.bat alebo na neho vytvorim normalny odkaz napr. na ploche.
tibika
Pokročilý
Uživatelský avatar

Odeslat příspěvekod mariank 5. 12. 2009 19:11

Skúšal som to cez ten bat - súbor a nezmení mi to ani tak prioritu.

Mám Win 7 x64 En
mariank
Junior

Odeslat příspěvekod tibika 5. 12. 2009 19:15

No neviem... asi robis niekde chybu, mne to spolahlivo funguje
tibika
Pokročilý
Uživatelský avatar

Odeslat příspěvekod tibika 5. 12. 2009 19:36

Skus teda takto:

v tom subore prog.bat napis:

Kód: Vybrat vše
@echo off
CD "C:\program\"
start /High prog.exe


Toto uz by fakt malo fungovat :D
tibika
Pokročilý
Uživatelský avatar

Odeslat příspěvekod mariank 6. 12. 2009 10:00

Môj bat -súbor vyzerá nasledovne:

@echo off
CD "E:\Program Files (x86)\AMC2000\ATV2000\"
start /High ATV2000.exe

Skúšal som to spúšťať aj cez "Run as administrator", skúšal som nastaviť ak kompatibilitu.
Stále to nenastaví prioritu.
mariank
Junior

Odeslat příspěvekod tibika 6. 12. 2009 12:49

Tento sposob funguje, ale je jedna vynimka co som si vsimol -- ked pred spustenim toho programu musim potvrdit UAC, tak priorita je skutocne normal, bez ohladu na nastavenie v bat...

uz mi fakt nic ine nenapadá, tak snad uz len vypnut UAC.. (napr. Opera ok, ale everest potrebuje vzdy potvrdenie -- priorita stale normal)
tibika
Pokročilý
Uživatelský avatar

Odeslat příspěvekod mariank 6. 12. 2009 18:18

Vypol som aj UAC a stále to nefunguje.
Skúšal som firefox.exe a tam to fungovalo aj so zapnutým UAC.
mariank
Junior

Odeslat příspěvekod oooooooooo 6. 12. 2009 23:44

Existuje ještě jedna cesta - Get-WmiObject win32_process a SetPriority
Zkusím se podívat přimo na script kterej to je v Scriptomaticu zítra jestli to najdu.
Aha takže v scriptomaticu jsem to nenašel ale pokud si udělaš powershell script který spustí everest - koneckonců jestli maš batak nebop powershell script je celkem jedno.zadej do powershellu get-help start-process -full a bude jasno.
Neboli start-process s | foreach { $_.PriorityClass = "High" }
Nastaveni priority v get-process gps everest | foreach { $_.PriorityClass = "High" }
http://seven7.blog.zive.cz/
Spuštění Windows předchází pád.
oooooooooo
Pokročilý
Uživatelský avatar

Odeslat příspěvekod mariank 7. 12. 2009 15:28

Ked spustim ATV2000.exe a potom v powershelli spustim
get-process ATV2000 | foreach { $_.PriorityClass = "High" }

tak mi to nastavi High prioritu.

Poradte mi ako mam napisat bat-subor,
aby spustil ATV2000.exe a potom spustil v powershelli ten prikaz ????
mariank
Junior

Odeslat příspěvekod oooooooooo 7. 12. 2009 23:20

powershell umi všechno sám,nicmeně koukam že mam PM od vás napišu vám jak na to .Misto bataku udělate ps1 neboli powershell script.
Ale až zítra dnes už hlava nebere a dorážím slivovici
Kdyby nahodou tak to bude vypadat asi takto - script v němž bude start -process ATV2000 a misto pokračování get bude další požadovek již jen na nastavení priority na high tot vše.Kliknete na script spusti se s prioritou high to co chcete.neboli před krok 2 který jste dělal ted se strčí krok s požadavkem startu daného procesu.
Ted jsem si uvědomil že vam budu muset napsat co znamena set-execution policy a proč si bez toho ani svůj script nespustíte.
No nic zítra ,stejně planuju že bych plácl na blog nějaký miniserial s zajímavýma scriptama,přikazama v powershellu,seven má celkem dost lidí - takže ti ho mají všichni.
Jinak napsat batak poradi kdokoliv jak na to kdyby něco a help powershellu poradí jak spouštět pomocí něj cokoliv - nejenom batak.
http://seven7.blog.zive.cz/
Spuštění Windows předchází pád.
oooooooooo
Pokročilý
Uživatelský avatar

Odeslat příspěvekod oooooooooo 8. 12. 2009 09:31

Dám to sem místo do PM kdyby měl někdo stejný problem.
Spuštění s high prioritou pomocí powershellu - pokud ti jiný způsoby selhaly - přesněj v cestě stojí UAC.To co napišu si dej do obyčejneho textaku.Spust powershell jako admin.
Tak jak to je tam vlož spusti se oba prikazy - process poběží s prioritou high,jde udělat i script ovšem spouštění vyžaduje prvotní nastavení set-execution policy
remotesigned to popíšu pozděj na blogu.Můžeš koneckonců spouštět více procesů naráz takto a s rozdilnýma prioritama.

start-process ATV2000
gps ATV2000 | foreach { $_.PriorityClass = "High" }
http://seven7.blog.zive.cz/
Spuštění Windows předchází pád.
oooooooooo
Pokročilý
Uživatelský avatar

Odeslat příspěvekod tibika 8. 12. 2009 11:40

S tym UAC je to fakt sranda... v podstate program pozadujuci potvrdenie ma vyssie prava ako ja, lebo takym programom nemozem nastavit prioritu procesu cez task mananager (nedostatocne prava)... az ked som task man. spustil ako admin, dovolil mi zmenit aj takemu procesu prioritu...

No ale dobre ze sa nasiel niekto, kto tomu tak rozumie (respect), ja uz som bol zufaly, co do toho bataku napisat :-D
tibika
Pokročilý
Uživatelský avatar

Odeslat příspěvekod tibika 10. 12. 2009 22:10

Tak teda napokon SOLVED.

ooooooooo tu ukazal skutocne cestu ako na to, ale malo to jednu muchu -- uzivatelsky komfort -- vzdy by bolo treba spustat powershell, menit execution policy a napokon spustit skript.

Zakladny problem je, ze powershell v default nastaveni nechce vykonavat skripty, ktore nie su podpisane. Navyse, tato politika sa neda trvalo zmenit, len cez interface powershellu a len na danu session (zmena policy vyzaduje potvrdenie uzivatela).

Existuje na to taky bypass: v principe mozno zadavat prikazy powershellu ako parameter pri jeho spusteni cez cmd, napr.

Kód: Vybrat vše
powershell -command "1+2"
>> 3

Toto ale ma jednu nevyhodu -- niekedy sa samotny cmd pokusi parsovat obsah prikazu powershellu (pri "1+2" to funguje ok, ale je to nevyspytatelne). Takze treba urobit bypass bypassu a to tak, ze ten prikaz powershellu sa zakoduje. Tu je priklad:

Kód: Vybrat vše
$code = {start-process "C:\files\prog\program.exe"}
$encd = [convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($code))

Vznikne nieco podobne (nenapisem to cele, je to dllhy retazec):
Kód: Vybrat vše
cwB0AGEAcgB0AC0AcAByAG8AYwBlAHMAc

No a teraz uz len v cmd (napr. aj cez batch-file) zadat
Kód: Vybrat vše
powershell -encoded cwB0AGEAcgB0AC0AcAByAG8AYwBlAHMAc

No a takto sa da pokracovat zlozitejsimi prikazmi resp. celym "programom" -- v podstate prinutite powershell vykonavat skript, ani o tom sam nevie :D a je to proti jeho execution policy. Samozrejme -- ked to je treba, musi sa bat spustat pod admin pravami, ale na to už bypass nie je :-]
tibika
Pokročilý
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků