Slettet bruger
20. december 2005 - 17:35
Der er
21 kommentarer og 1 løsning
Lukning, genstart, standby osv.
Hej eksperter! Hvordan lukker jeg computeren via C++? Genstarter? Standby? Dvale? Skriv gerne hele koden!
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
20. december 2005 - 17:44
#1
Slettet bruger
20. december 2005 - 20:54
#2
Tak for det! Bruges de sammen med 'system()'?
20. december 2005 - 22:57
#3
Et simpelt eksempel der slukker computeren uden at spørge om noget som helst: #include <windows.h> #include <stdio.h> BOOL SetPrivilege() { HANDLE Token; LUID luid; TOKEN_PRIVILEGES tp; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_WRITE, &Token)) { printf("OpenThreadToken error: %u\n", GetLastError()); return FALSE; } if(!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &luid)) { printf("LookupPrivilegeValue error: %u\n", GetLastError()); return FALSE; } tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(Token, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES )NULL, (PDWORD )NULL); if (GetLastError() != ERROR_SUCCESS) { printf("AdjustTokenPrivileges error: %u\n", GetLastError()); return FALSE; } return TRUE; } int main() { if(!SetPrivilege()) { printf("Failed to set privilege\n"); return 0; } if(!ExitWindowsEx(EWX_POWEROFF, 0)) { printf("Error: %d\n", GetLastError()); } }
Slettet bruger
21. december 2005 - 07:44
#4
Beklager - men jeg er lidt hysterisk... Gider du skrive den i C++? Med cout i stedet for printf? Jeg forsår ikke det andet :(
21. december 2005 - 08:19
#5
printf versus cout har da intet med ExitWindowsEx kaldet at gøre
Slettet bruger
01. januar 2006 - 16:08
#6
printf versus cout har da intet med ExitWindowsEx kaldet at gøre > Huh? Hvad mener du? Det har sikkert ikke noget at sige, men jeg forstår simpelthen ikke print.
01. januar 2006 - 17:12
#7
printf("Failed to set privilege\n"); kan rstattes af cout << "Failed to set privilege" << endl; men måske vil du skrive fejl til en log fil eller bruge en popup dialog box eller noget andet
Slettet bruger
06. januar 2006 - 22:05
#8
Hvad betyder %u???
Slettet bruger
06. januar 2006 - 22:06
#9
Eller %d?
06. januar 2006 - 22:13
#10
%d betyder sæt argument ind som tal her
06. januar 2006 - 22:14
#11
printf("%d=%s\n",123,"abc"); udskriver: 123=abc og svarer derfor til: cout << 123 << "=" << "abc" << endl;
06. januar 2006 - 22:14
#12
%u står sikkert for unsigned tal
18. januar 2006 - 13:20
#13
hvor meget skulle du have for, at skære koden ud i pap, altså fortælle hvorfor du skriver som du gør? Koden virker jo fint, men hvad betyder det hele!? Hvorfor kan man ikke bare nøjes med: #include <windows.h> #include <stdio.h> int main(){ ExitWindowsEx(EWX_POWEROFF, 0); }
19. januar 2006 - 01:01
#14
Man kan ikke "bare" kalde ExitWindowsEx under Windows NT/2000/XP, for så vil den ikke slukke.
Slår man op under ExitWindowsEx på msdn står der:
"Windows NT/2000: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information about security privileges, see Privileges."
Du kan læse om "access control" og "Privileges" her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/access_control.asp Det er en lidt indviklet...
19. januar 2006 - 08:35
#15
Ja, det må jeg da sige :o Pyt. Nu har jeg koden, om jeg så forstår den .... ja, det kommer jeg nook til en dag :)
Slettet bruger
01. april 2006 - 08:16
#16
Jeg fprstår i hvert fald ingenting. Nå, put, bare smid et svar. Dette spørgsmål trækker godt nok ud...
Slettet bruger
01. april 2006 - 08:16
#17
*pyt
Slettet bruger
01. april 2006 - 08:16
#18
*forstår
Slettet bruger
01. april 2006 - 08:16
#19
*GOD RETSTAVNING*
01. april 2006 - 10:40
#20
kan ikke huske. Skal jeg svare?
Slettet bruger
01. april 2006 - 18:58
#21
Egentlig var det vist arne_v... Whatever, for god venskabs skyld :)
Slettet bruger
01. april 2006 - 18:59
#22
--- LUKKET ---
Kurser inden for grundlæggende programmering