Eli kuten otsikko sanoo, oli tarkoitus tehdä ajastin jolla saisin koneen jossa xp käyttis sammutettua.
Meinasin käyttää system() funktiota ja shutdown komentoa.
Mutta koska en ole pääkäyttäjän oikeuksilla kirjautunut en saa komentoa C ohjelmasta toimimaan. Saan ainoastaan, Käyttö estetty viestin.
Saanko millään "toimitettua" pääkäyttäjän tunnuksia sulkemisen yhteydessä?
Pengoin tuota asiaa lisää googlen avustuksella ja tulin siihen tulokseen ettei tuo homma kyllä suoraan shutdown komennolla onnistu.
Löysin runas komennon jolla tavis käyttäjä voi suorittaa jonkin ohjelman korotetuin oikeuksin, olisikohan tuosta apua? Kokeilin, mutta en saanut toimimaan.
Piti siinäkin syöttää käsin salasana.
Mietin vain että miten netistä ladattavat ajastimet jotka hoitavat tuon sammutuksen on oikein toteutettu ja että onko tuon toteutus edes mahdollista C-kielellä.
Käytä WinAPIa. Esim.:
BOOL WINAPI ExitWindowsEx( __in UINT uFlags, __in DWORD dwReason );
Tarkempaa infoa täältä ja täältä.
Tässä vielä suora esimerkki MSDNstä:
#include <windows.h> #pragma comment(lib, "user32.lib") #pragma comment(lib, "advapi32.lib") BOOL MySystemShutdown() { HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE ); // 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); if (GetLastError() != ERROR_SUCCESS) return FALSE; // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_UPGRADE | SHTDN_REASON_FLAG_PLANNED)) return FALSE; //shutdown was successful return TRUE; }
P.S. Tämäkin löytyi n. 3 minuutin Googlettelun ansiosta...
Niin varmasti. En näköjään oikeita "taikasanoja" googlelle osannut syöttää :(
Kiitos linkeistä ja vinkistä :)
Ville kirjoitti:
Niin varmasti. En näköjään oikeita "taikasanoja" googlelle osannut syöttää :(
Kiitos linkeistä ja vinkistä :)
"c++ winapi shutdown" :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.