[ djnesha @ 27.12.2003. 12:22 ] @
Imam jedan zanimljiv problem cije ce resenje,verujem, mnogima koristiti.. Naime, napravio sam program (klijent) kojim se zabranjuje koriscenje kompjutera (u smislu blokade misa,tastature,desktopa,taskbara..) sve dok server to ne dozvoli i sve to lepo radi(radi se o programskom jeziku Delphi,uzgred) ali problem je sledeci: od startovanja windows desktopa pa do startovanja mog programa prodje 2-3 sekunde (program sam stavio u boot sekvenci u msconfigu) a to je dovoljno da se startuje bilo sta sa desktopa i onda moj program nastavi da radi u pozadini a ono sto je startovano ostane napred i moze da se koristi! Kako da resim ovaj problem?
Da li postoji neka fora da se pgm startuje pre desktopa?
Ili da moj program ugasi sve prozore kad se startuje(ovo je glupa finta ali kako bar to da uradim? sa GetForegroundWindow...wm_close nece da zatvori bas sve)
Cuo sam i za neki bootmagic..nemam pojma sta je to..

Kako bi ste vi to resili?

Hvala svima unapred!
[ reiser @ 27.12.2003. 13:03 ] @
Pisao sam slican program, dao bih ti ga pa ti vidi, samo CD trenutno nije kod mene...
Jel program ima vidljiv formular ? Ako je tako, onda property FormStyle stavi na StayOnTop i program ce ti biti uvek na vrhu.
Ili, kad se program instalira, neka ostane rezidentan u memoriji. Zatim, kad korisnik pokusa da restartuje/ugasi racunar, neka program iskopira sve sa desktopa u neki drugi folder i izbrise sve sa desktopa. Sledeci put kad se racunar startuje, na desktopu nece biti nista, i kad se program startuje neka tad vrati ikonice na desktop.
[ djnesha @ 27.12.2003. 16:18 ] @
da, vidljiv je, ali pri StayOnTop niko mi ne garantuje da ce prekriti ono sto je startovano pre njega. recimo,startujem neku jaku igru (Generals) i ona ce ponistiti dejstvo StayOnTop.
Ovo drugo je nemoguce jer puno stvari moze da se startuje sa Start>Programs>..
tako da Desktop i nije mnogo vazan. Kako su ovi koji prave programe za igraonice to uradili? Tu se,maltene, ne vidi windows..
Sta je bootmagic?
[ nikdim @ 28.12.2003. 02:57 ] @
Zdravo, mogu da ti posaljem kod za skrivanje[nema ikonica] desktopa ako ti nesto znaci, mada pored toga moze i da se disable-uje desktop[nema reakcija na mouse];
U igraonicama se programi NE STARTUJU odmah i tu treba dfa prodje odredjeno vreme,inace u igraonicama pored domaceg software-a koriste programe kao PC Security[www.tropsoft.com] i WinLock, uzgred kako si odradio postavljanje u boot sekvencu u msconfigu ?
Mada nije losa varijanta da program izbrise iz process liste sve ostale ...
[ Crazy Mix @ 28.12.2003. 10:29 ] @
Citat:
nikdim:
...uzgred kako si odradio postavljanje u boot sekvencu u msconfigu ?...


U registry upises (u HKEY_LOCAL_MACHINE, kljuc "\SOFTWARE\Microsoft\Windows\CurrentVersion\Run")

var: Ime programa
string: putanja do programa

nesto kao ovo:

u uses listu dodas Registry...

i onda...

Code:

procedure TForm1.FormCreate(Sender: TObject);
var reg:TRegistry;
    jednom:boolean;
    ime_programa:string;
begin
{ OPCIJE }
jednom:=false; //ako zelis da se prog. pokrene samo jednom, stavi na true...
ime_programa:='Ime tvog programa'; //ovde stavi ime programa
//------------------------kraj-opcija----------//
reg := TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
if jednom=true then begin
reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce',true);
end else begin
reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true);
end;
reg.WriteString(ime_programa,paramstr(0));
reg.CloseKey; //zatvoris kljuc
reg.Free; //oslobodis memoriju...
end;


Nije isprobano, ali radi (nije isprobano sa ovim "jednom")...
[ djnesha @ 28.12.2003. 11:42 ] @
Imam komponentu za skrivanje ikona,disableovanje ss,traya,start dugmeta, sys key-a(amwinenv sa torry.net-a) ali sve je to dzaba jer mi se program ne startuje odmah! sto se tice igraonica, da, postoje neki programi koji rade kao i ovaj moj,kasne, ali vidjao sam i neke koji kao da zaobidju windows. moguce da koriste ove dodatne stvari (winlock..)
Za boot sekvencu: startujes msconfig, udjes u win.ini (imam win(me),mozda ce se malo razlikovati kod tebe) i onda otvoris granu windows i tu stavis load='sta hoces da startujes' a mozes da odes i u system.ini pa otvoris granu boot i tu isto load=.. ali ja to nisam probao. sad cu da vidim ovo crazymix resenje pa cu javiti sta sam uradio
Hvala
Pozdrav.
[ morlic @ 29.12.2003. 08:20 ] @
Najbolje je resenje da svoj program postavis kao shell, pa tako nema desktop-a (klasicnog) itd. Mana je sto moras neke stvari sam da napravis. Ja sam uradio svoj start meni, desktop, cak i zvuk mozes da pojacavas kao kod standardnog shell-a. Na ovaj nacin ti se program uvek pokrece prvi. Gasenje drugih procesa je posebna prica.
[ nikdim @ 29.12.2003. 13:51 ] @
Sve je to jasno samo je jedan problem:KAKO NAPRAVITI SOPSTVENI SHELL ?
{bez koriscenja dissasemblera} ?

Mislim da imam resenje "grubom silom" sa postojecim shellom, ali bi bilo mnogo bolje kada bi napravio sopstveni, moze li bar deo source-a ili neki uput ?
[ -zombie- @ 29.12.2003. 16:19 ] @
ma sopstveni šel je običan .exe fajl koji može a i ne morada da ima start meni, može a i ne mora da ima pojačavanje zvuka i slično.

važno je da iz programa možeš da radiš sve što želiš da radiš. u tvom slučaju, da se uloguješ i startuješ igrice bi verovatno bilo dosta..


znači, samo stavi putanju do svog programa negde u registry (u starim windowsima je to valjda bilo u win.ini u shell stavci, a u ovim novim će ti neko već reći).
[ morlic @ 29.12.2003. 21:12 ] @
Code:

function  SetWindowsShellApp( ExePath : string ) : boolean;
Var Ini : TIniFile;
begin
     try
     Ini := TIniFile.Create( GetWindowsFolder + '\system.ini' );
     except
           Exit;
     end;

     try
     Ini.WriteString( 'Windows', 'Shell', ExePath );
     Ini.WriteString( 'Boot', 'Shell', ExePath );
     finally
         Ini.Free;
     end;
end;
function  UnSetWindowsShellApp( ExePath : string ) : boolean;
Var Ini : TIniFile;
begin
     try
     Ini := TIniFile.Create( GetWindowsFolder + '\system.ini' );
     except
           Exit;
     end;

     try
     Ini.WriteString( 'Windows', 'Shell', 'Explorer.exe' );
     Ini.WriteString( 'Boot', 'Shell', 'Explorer.exe' );
     finally
         Ini.Free;
     end;
end;
[ Crazy Mix @ 01.01.2004. 21:39 ] @
Ja sam radio ovo sa shell-om (rucno upisivao iz DOS-a (Win89SE), posto nisam mogao da snimim system.ini <- ne mora da znaci da nece i kod Vas, a mozda i kod mene nije projavljivalo read-only). Fantasticno radi, znaci, ISPROBANO!
[ djnesha @ 02.01.2004. 13:33 ] @
hm,hm,hm..obicno pisem odgovore offline,kad razmislim o vasim odgovorima...ali sada me nesto mnogo kopka.. Ovako, taj shell je verovatno neki program koji se startuje u windowsu(cim pominjete registry),koji ima svoj maximized prozor i koji simulira desktop? jel da? al zar nije to isti problem,jer on mora da ceka windows da se startuje? CrazyMix molim te objasni mi malo preciznije,ne kapiram bas ono "fantasticno radi"? :)
[ Shadowed @ 02.01.2004. 18:40 ] @
Desktop, Start menu, Taskbar itd. su UI jednog programa koji se zove explorer.exe i koji je default shell. Postoje dva nacina da ga zamenis svojim shell-om (koji moze da bude bilo koji program). Jedan je da preimenujes explorer.exe i stavis na njegovo mesto svoj program (pod imenom explorer.exe) ili da podesis u Registriju (Win NT based) ili system.ini fajlu (Win9x).
[ djnesha @ 03.01.2004. 21:21 ] @
NARAVNO! SHELL rules! napravim sta hocu,stavim umesto explorer.exe kao shell i nema desktopa,ikonica,nicega! samo,pgm mora da je u win direktorijumu!
Hvala Crazy Mix i ostalima!!!
Srecna vam nova godina!!! :)
[ morlic @ 05.01.2004. 16:15 ] @
Ne mora exe da ide u win direktorijum. dovoljno je da stavis punu putanju do exe-a tamo gde treba i to je to.
[ [email protected] @ 05.01.2004. 19:19 ] @
To se resava mnogo prosto...
Uvek ga iznova ubazi u registar, i to u deo:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

Zapmti, uvek kada otvaras program, ponovi zapis u registar...


Citat:
djnesha:
Imam jedan zanimljiv problem cije ce resenje,verujem, mnogima koristiti.. Naime, napravio sam program (klijent) kojim se zabranjuje koriscenje kompjutera (u smislu blokade misa,tastature,desktopa,taskbara..) sve dok server to ne dozvoli i sve to lepo radi(radi se o programskom jeziku Delphi,uzgred) ali problem je sledeci: od startovanja windows desktopa pa do startovanja mog programa prodje 2-3 sekunde (program sam stavio u boot sekvenci u msconfigu) a to je dovoljno da se startuje bilo sta sa desktopa i onda moj program nastavi da radi u pozadini a ono sto je startovano ostane napred i moze da se koristi! Kako da resim ovaj problem?
Da li postoji neka fora da se pgm startuje pre desktopa?
Ili da moj program ugasi sve prozore kad se startuje(ovo je glupa finta ali kako bar to da uradim? sa GetForegroundWindow...wm_close nece da zatvori bas sve)
Cuo sam i za neki bootmagic..nemam pojma sta je to..

Kako bi ste vi to resili?

Hvala svima unapred!

[ reiser @ 06.01.2004. 21:12 ] @
Citat:
[email protected]:
To se resava mnogo prosto...
Uvek ga iznova ubazi u registar, i to u deo:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

Zapmti, uvek kada otvaras program, ponovi zapis u registar...


A jer si ti ovo probao ? Kao prvo, ako se program odmah doda u runonce posle njegovog startovanja, napravices beskonacnu petlju i zakucaces windows, a i pitanje je bilo kako da se program startuje PRE pojavljivanja ikonica na desktopu i taskbara.

Nego ljudi, mene zanima moze li nekako 'rucno' da se posle startuje explorer ? Znaci, pravim protector koji ce da se startuje pre pojavljivanja ikonica (startuje se umesto explorer-a), i zatim ako user ukuca tacnu lozinku protector treba da startuje pravi explorer i da se iskljuci. (sve ovo uradim, ali kada protector pokrene explorer.exe, to nije ONAJ program koji ce da ucita ikonice, itd..., nego se otvori Windows Explorer)

Poz, Marko.
[ [email protected] @ 06.01.2004. 23:11 ] @
!Za g.Zombija

Postovani gospodine, posto ste izmenili pocetak poruke, gde stoji da se ne obracam nenadu cvetkovicu, vec marku paunovicu, koga uzgred niste opomenuli na drskosti, nema razloga da delovi ove poruke stoje na forumu, jer se stice utisak da se obracam autoru teme nenadu cvetkovicu obracam. Koga uzgred jako cenim sto je pomoc zatrazio na internetu za svoj rad. Inace je jako kulturan i fin.

Zato bi od vas bilo najbolje da moju celu poruku obrisete. Tako barem nece doci do zabune.

Uz sve pohvale na racun vaseg sajta www.elitesecurity.org, i ideje o yu forumima.

Milan.


//Deo poruke namenjene Marku Paunovicu
{
nisi probao ono sto su ti dva programera rekla

1. Da si malo pogledao RunOnce video bi da sluzi bas sa setovanje novih dll i aktivacije svega pre korisnickog startovanja operativnog sistema. Cak ako se startuje tada program koji user mora da ugasi, prekinuce se dalje ucitavanje Windowsa dok user ne zatvori program.

2. RunOnce ne moze da stvori beskonacnu petlju jer se lista programa za izvrsenje prvo ucitava u memoriju kao kopiranje vrednosti, pa tek onda izvrsava

3. Mesto da sam pises brojne funkcije za disejblovanje shela, da si malo pogledao po internetu video bi da postoje API funkcije za disejblovanje, gde samo trebas da nabrojis sta zelis da iskljucis. Na tebi je samo da napravis listu programa koji mogu da se startuju. Ali posto si prilicno nadmen nemam nameru da te upucujem dalje. Pa kako god napravio svoj shell nece ti biti kao integrisan Microsoftov. Zao mi je...
}


// upozorenje: malo spustiti ton..

[Ovu poruku je menjao -zombie- dana 07.01.2004. u 07:31 GMT]

[Ovu poruku je menjao [email protected] dana 07.01.2004. u 09:19 GMT]
[ morlic @ 06.01.2004. 23:35 ] @
Evo malo stiva iz MSDN-a u vezi startovanja:

Citat:

By default, the value of a RunOnce key is deleted before the command line is run. You can prefix a RunOnce value name with an exclamation point (!) to defer deletion of the value until after the command runs. Without the exclamation point prefix, if the RunOnce operation fails the associated program will not be asked to run the next time you start the computer.

By default, these keys are ignored when the computer is started in Safe Mode. Starting with Windows NT 4.0 SP3, the value name of RunOnce keys can be prefixed with an asterisk (*) to force the program to run even in Safe mode.

A program run from any of these keys should not write to the key during its execution because this will interfere with the execution of other programs registered under the key. Applications should use the RunOnce or RunOnceServices keys only for transient conditions, such as to complete application setup. An application must not continually recreate entries under RunOnce or RunOnceServices because this will interfere with Windows Setup.

Run and RunOnce keys are run each time a new user logs in. RunServices and RunServicesOnce are run in the background when the logon dialog box first appears or at this stage of the boot process if there is no logon. These keys are for background services such as remote registry service and are run only once per boot. The Setup key is run only by Setup's first-boot activities, or after you use the Add/Remove Programs Wizard. This key displays the progress dialog box as the keys are run one at a time. For the Setup key, the name of the value is the name that is displayed in the dialog box.


Malo je postalo vatrenije u ovoj niti. Nema potrebe za nekim negativnim emocijama. Jedna od lepota programiranja je da se problem moze resiti na vise nacina, tako da vase resenje ne mora biti ni jedino ni najbolje. Ja se evo nista ne bunim. Mogu da se pohvalim da sam vec napravio ono sto coveku treba, da sam to istestirao i da radi, pa sad...ko zeli drugacije da resava...Samo da dam jedan savet: ko zeli da upravlja windows-om mora da ima MSDN inace bolje nek se mane posla.
[ [email protected] @ 07.01.2004. 20:38 ] @
[quote]morlic:
Evo malo stiva iz MSDN-a u vezi startovanja:

Citat:

...Mogu da se pohvalim da sam vec napravio ono sto coveku treba, da sam to istestirao i da radi, pa sad...ko zeli drugacije da resava...Samo da dam jedan savet: ko zeli da upravlja windows-om mora da ima MSDN inace bolje nek se mane posla.



Posetio sam inovacija.co.yu. Lep sajt i pozdravljam programe. Video sam program za shutdown kompjutera u izvesno vreme. Mislim da nema potrebe za dodatnim programom, kada svako moze dodati scheduled task u Windows za odredjeno vreme i komandom shutdown. Mnogo lakse nego da skida program sa interneta i da ga startuje u pozadini. I uz to ima i odbrojavanje.

U svakom slucaju pozdravljam napore.

Da li se neko bavi programiranjem MySQL-a?
[ dRock9 @ 19.01.2004. 14:28 ] @
Citat:
Marko Paunovic:
Nego ljudi, mene zanima moze li nekako 'rucno' da se posle startuje explorer ? Znaci, pravim protector koji ce da se startuje pre pojavljivanja ikonica (startuje se umesto explorer-a), i zatim ako user ukuca tacnu lozinku protector treba da startuje pravi explorer i da se iskljuci. (sve ovo uradim, ali kada protector pokrene explorer.exe, to nije ONAJ program koji ce da ucita ikonice, itd..., nego se otvori Windows Explorer)


E upravo ste dosli do necego sto sam ja koristio za slicne potrebe (konkretno software za sportske kladionice). Znaci pokretanje je bilo kao shell (i na taj nacin ti niko nista ne moze). U programu (pod sifrom naravno) postoji pristup za servisiranje, baze, itd... gde sam ubacio i pokretanje komande (nesto kao run). To se inace resava vrlo prosto komandom ShellExec (ili bese ShellExecute) koja je standardna API funkcija. Za one obicne smrtnike (radnike kladionice) tu su dugme Reset i Shutdown za resetovanje, odnosno gasenje racunara jer oni nemaju potrebe za pristup ostatku windows-a. To je resenje koje mi se pokazalo kao najprakticnije, ali MORATE da vodite racuna o dve stvari (sto se shell-a tice):

1. Za win98 i stariji MORATE iskljuciti presretanje sa F8 jer ce inace neko dici command prompt i prebaciti shell nazad na explorer ili sta vec...

2. U BIOSu racunara first boot NE SME biti disketa jer ce neko sa sistemskom odraditi stvar vrlo slicnu kao pod 1. Takodje BIOS treba da bude zasticen pass-om da isti pametnakovic ne bi promenio boot na floppy. E sada ako je neko bas toliko uporan da bi rasturio komp da dzamperom ocisti BIOS ili recimo skine bateriju i preko nekog otpornika isprazni kondenzatore (citaj: skine sifru) onda vam preostaje samo jos da uzmete CO2 aparat i zavarite kuciste :) Takoreci savrsene zastite nema ako je u pitanju masina sa direktnim pristupom, ali dovoljno dobre su one koje nas interesuju.

Inace meni je ovakva varijanta (naravno bez varenja, mada sam ponegde stavljao one nalepnice sto se lako cepaju pri otvaranju) za sada bez problema zavrsavala sve poslove. Jos jedna dobra stvar kod ovakvog pristupa je zastita od "vracanja sistemskog vremena" sto je inace cest problem kod kladionica. Sa ovakvim pristupom uopste nemate brige da ce neko uopste biti u mogucnosti da menja datum i vreme osim vas pa i nemate potrebe za pisanjem glomaznog koda i pamcenjem startovanja programa, gasenja programa i ostalo.
Najbolje od svega je to sto je podignuto sve osim explorera i onoga sto on ima zadatak da startuje (dakle svi drajveri i potrebni servisi) tako da mrezna komunikacija radi bez ikakvih problema (ja sam npr. koristio UDP).

Toliko od mene.
Ziveli !
[ Kula @ 23.05.2004. 02:32 ] @
Ukoliko se radi o Win98 ili WinMe dovoljno je otvoriti system.ini fajl i na mjestu gdje pise Shell=explorer.exe samo stavi ime svog programa npr. Shell=Program.exe. Ako ovo uradis nije moguce cak ni pokrenuti Win u Safe Mod-u tako da je taj pokusaj uzaludan. Sljedece sto trebas uraditi je kao sto je rekao kolega dRock9 onesposobiti Floppy u BIOS-u i staviti pass na bios.
E sljedece sto ces uraditi jeste ukoliko zelis pokrenuti ponovo Win, da vratis system.ini fajl u prijasnje stanje (Gdje je Shell=Explorer.exe).To mozes uraditi na nekoliko nacina ali za sad imam ova tri prijedloga:
1. Da u tom svom programu napravis jedno dugme cijim ces klikom zamijeniti postojeci system.ini fajl (koji si ti promijenio) sa pravim (koji ce ti biti na nekom mjestu npr c:\beze\system.ini). Naravno to ce ti dugme biti zasticeno passwordom (npr. pored tog dugmeta stavis edit u koji ces upisati pass i ukoliko je pass tacan dugme ce biti osposobljeno).
2. Drugi nacin je da isto ostavis dugme (zasticeno passwordom) koje ce pokretati Notepad.exe i kada pokrenes notepad otvoris fajl system.ini i sacuvas ga. Restaruj racunar i ponovo ce biti po starom (Stari dobri Win ).
3. Ponovo dugme (jesam postao dosadan sa njim ) sa kojim ces pokretati Explorer.exe (naravno preko shellAPI funkcije-moj savijet)
Dakle citavo vrijeme ti se vrtis oko exlorera a trebao si ga samo zamijeniti. Ja sam vec pravio takvu zastitu na svom kompjuteru tako da mi je do sada bila veoma uspijesna. Ukoliko imas nesto nejasno molim te javi mi na mail posto nemam vremena.
Ukoliko tebe interesuje WinXP stvarno mi je zao (prvo mene sto se ovoliko naprica) ali to je vrlo tesko tako da se nisam puno vrtio oko toga. TOliko od mene nadam se da sam ti pomogao ako nisam tebi mozda nekom jesam.....
[ Vladica Savić @ 02.07.2004. 08:43 ] @
A sto lepo ne bi formu postavio maximize modu, border style postavio none i ukucao kod za skrivanje sa start linije, ili postavio sifru na close akciju za taj tvoj program i iskoristio proceduru za stavljanje tvoje forme ontop???