Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 28 odgovora
  • 10.830 pregleda

Najnovija ↓

Program napisan u jeziku C za restart PC 31.01.2007. u 23:14 · pre 240 meseci #1
kako da napisem program normalno u jeziku C, koji ce kada se pokrene iz windowsa prikazati neku poruku i posle nekoliko sekundi restartovati racunar?
Re: Program napisan u jeziku C za restart PC 02.02.2007. u 02:30 · pre 240 meseci #5
Funkcija je, kao što ti je NrmMyth rekao, "system" a da bi mogao da
je zoveš moraš include-ovati <process.h>. Inače kada se već govori
o shutdown komandi, pretpostavka je da je u pitanju windows pa
to možeš uraditi i preko WIN API-ja, samo u tom slučaju moraš da
se igraš sa menjanjem ring level-a da bi imao prava da resetuješ mašinu.

Re: Program napisan u jeziku C za restart PC 02.02.2007. u 02:37 · pre 240 meseci #6
Zasto bi morao da menja ring-level? Ako user koji pokrece program ima pravo da iskljuci racunar (a to ima cak i limited user), imace i program.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Program napisan u jeziku C za restart PC 02.02.2007. u 08:57 · pre 240 meseci #7
Postoji cela istorija 'načina' kako se može 'zagasiti' Windows, a postoji i istorija problem
koji su pratili te načine, u zavisnosti od toga koja su prava i privilegije postavljeni.

Pored pomenutog system( "shutdown -r -f -t 03" ), koji je univerzalni wrapper
koji bi trebalo da radi, Windows se gasi sa API-jem:
Code:

ExitWindowsEx();

... pri čemu prethodno treba imati određene privilegije. Ukoliko me pamćenje dobro služi
(na osnovu prijava korisnika po raznoraznim forumima), nekad nije dovoljno biti korisnik sa
Admin pravima da bi se Windows ugasio, restartovao ili promenio User.
Prethodno je potrebno pozvati:
Code:

AdjustTokenPrivileges()

... jer ExitWindowsEx() zahteva da 'calling process' ima SE_SHUTDOWN_NAME
privilegije. Mislim da je to u suštini ovo (uvo uzeti sa rezervom):

START: Control Panel > Administrative Tools > Local Security Settings
STABLO: Security Settings > Local Policies > User Rights Assignment
STAVKA: Shut down the system [Add user]

Evo jedan primer (baziran na API-ju) koji sve to ima upakovano u jednu funkciju:
Code:

void SystemShutDown( int mode )
{
   HANDLE hToken;
   TOKEN_PRIVILEGES tkp;

   // AnsiString error;
   string error;

   // Get a token for this process.
   if ( !OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
      error = "OpenProcessToken";

   // Get the LUID for the shutdown privilege.
   LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid );
   tkp.PrivilegeCount = 1;  // one privilege to set
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

   // Get the shutdown privilege for this process.
   AdjustTokenPrivileges( hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0 );

   // Cannot test the return value of AdjustTokenPrivileges.
   if ( GetLastError() != ERROR_SUCCESS )
      error = "AdjustTokenPrivileges";

   switch( mode )
   {
      // 0 = Forcefully close apps, shutdown and leave system at shutoff point
      case 0:   if ( !ExitWindowsEx( EWX_SHUTDOWN | EWX_FORCE, 0 ) )
                   error = "ExitWindowsEx";
                break;

      // 1 = Forcefully close apps, shutdown and reboot
      case 1:   if ( !ExitWindowsEx( EWX_REBOOT | EWX_FORCE, 0 ) )
                   error = "ExitWindowsEx";
                break;

      // 2 = Forcefully close apps, and logoff
      case 2:   if ( !ExitWindowsEx( EWX_LOGOFF | EWX_FORCE, 0 ) )
                   error = "ExitWindowsEx";
                break;

      // 3 = Forcefully close apps, shutdown and poweroff
      case 3:   if ( !ExitWindowsEx( EWX_POWEROFF | EWX_FORCE, 0 ) )
                   error = "ExitWindowsEx";
                break;
   }
}

Re: Program napisan u jeziku C za restart PC 02.02.2007. u 10:31 · pre 240 meseci #8
Citat:
tosa: Funkcija je, kao što ti je NrmMyth rekao, "system" a da bi mogao da
je zoveš moraš include-ovati <process.h>. Inače kada se već govori
o shutdown komandi, pretpostavka je da je u pitanju windows pa
to možeš uraditi i preko WIN API-ja, samo u tom slučaju moraš da
se igraš sa menjanjem ring level-a da bi imao prava da resetuješ mašinu.
Neznam kako, ali izgleda da je system() dio standarda:
http://www.opengroup.org/onlin...09695399/functions/system.html
I nalazi se u <stdlib.h>.
Re: Program napisan u jeziku C za restart PC 22.03.2007. u 22:11 · pre 239 meseci #9
Ovim putem bih se i predstavio kao novi član sam nekim iskustvom u C programiranju, C++-u, Asembleru, nešto malo C# i PHP. Nadam se da ču naučiti dosta ovdje. A sad back to topic (znam da je malo old, ali nije baš ni prahistorija so here it goes....)




Preuzeto sa gornjeg linka....
Citat:

int system(const char *command);


Mislim da to nije ista stvar, nema iste argumente. Ovo je deklinacija cjelobrojne varijable, a ne system funkcije.

Ipak, sad sam se zainteresirao za ovu verziju koda sa system() u sebi. Dali bi to trebalo izgledati nekako ovako:

Code:


#include <proces.h>
int main (void)
{
system ( "shutdown -r -f -t 03" );
return 0;
}




Ovo bi bila nekakva osnova. Ispravite me gdje griješim i pokažite mi kako da to izvedeme molim vas...
Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 23.03.2007. u 00:59 · pre 239 meseci #10
Code:
int system(const char *command);

Citat:
TerrorsChild:
Mislim da to nije ista stvar, nema iste argumente. Ovo je deklinacija cjelobrojne varijable, a ne system funkcije.

A ja bih rekao da je to prototip funkcije system celobrojne povratne vrednosti, koja ima jedan argument - const pointer na tip char.
Re: Program napisan u jeziku C za restart PC 23.03.2007. u 07:09 · pre 239 meseci #11
Da, valjda si u pravu....
A jesi primjetio da imam jednu veliku grešku, napisao sam "DEKLINACIJA" cjelobrojne varijable, umjesto deklaracija. Kao da je imenica, lol :D :)


A kakav mi je onaj code gore, hoći li to raditi? Ispravci?
Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 24.03.2007. u 09:45 · pre 239 meseci #12
I? Dali ima tko kakve ideje?
Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 25.03.2007. u 23:24 · pre 238 meseci #14
Hmmmmm....za početak proces.h izgleda ne includa funkciju system. Treba se includati <stdlib.h>, jedino na taj način komplajer nije prijavio grešku, ali aplikaciju svejdeno nije učinila ništa. Pomoć molim....

Code:
#include <stdlib.h>

int main (void)

{

system ( "shutdown -r -f -t 03"  );

return 0;

}

Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 27.03.2007. u 09:58 · pre 238 meseci #15
Hmmm....da nije možda stvar u argumentima funkcije system?
Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 28.03.2007. u 21:20 · pre 238 meseci #16
Zar nitko nema ideje :(
Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 28.03.2007. u 22:50 · pre 238 meseci #17
Šta se događa kada komandu shutdown -r -f -t 03 ukucaš direktno u Command Prompt?

P.S.
Probaj i shutdown -s -t 00
Re: Program napisan u jeziku C za restart PC 29.03.2007. u 22:14 · pre 238 meseci #18
U command promtu mi ga ugasi sa obje solucije, ali aplikacije ne napravi ništa. Samo se izvede, nešto se procesira, ali ništa...


Pomoć molim....
Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 30.03.2007. u 23:21 · pre 238 meseci #19
Što sad?
Potpis
O Hrvatskoj...
"Te kad mi jednom se dušom po svemiru
se krene
Zaorit ču ko grom:
O, gledajte ju divnu, vi zvijezde udivljene,
To moj je, moj je dom!"
Re: Program napisan u jeziku C za restart PC 31.03.2007. u 18:30 · pre 238 meseci #20
OK, evo upravo sam ukucao ovaj kod u Borland C++ Builder (konzolni tip aplikacije):
Code:

#include <stdlib.h>
int main (void)
{
   system ( "shutdown -r -f -t 03"  );
   return 0;
}

... i sistem se restartovao (pojavio se dijalog sa odbrojavanjem sekundi). Onaj drugi
bi najverovatnije odmah bez odbrojavanja restartovao sistem.

1. Koji kompajler si ti koristio?
2. Pogledaj da li ima uticaja Debug i Release verzija EXE-a.
3. Pogledaj da li ima uticaja kada EXE pokrenes uopste iz razvojnog okruzenja i onako kroz Explorer.
4. Probaj tvoj EXE na nekom drugom računaru, da vidiš da li se dešava isto.
5. U odnosu na ovo pod (4) treba videti sta dalje isproveravati. OS se nekad ne moze
restartovati.

Eto. Šta još može da se učini...
Tema je zaključana, nove poruke nisu moguće.

Premeštanje teme