E
das ist ein .NET project, nix MFC
void COwnDlg::ShutDown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken );
LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid );
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken, FALSE, &tkp, 0, ( PTOKEN_PRIVILEGES ) NULL, 0 );
int iButton = GetCheckedRadioButton( IDC_RADIO1, IDC_RADIO3 );
if( iButton == IDC_RADIO1 ){
ExitWindowsEx( ID_SHUTDOWN, 0 );
::exit( 0 );
}
if( iButton == IDC_RADIO2 ){
ExitWindowsEx( ID_RESTART, 0 );
::exit( 0 );
}
if( iButton == IDC_RADIO3 ){
ExitWindowsEx( ID_LOGOFF, 0 );
::exit( 0 );
}
}
da haste sogar 3 radio buttons wo du zwischen runterfahren / neustarten / ausloggen unterscheiden kannst
mit den privilegien holen usw solltest du immer machen da es ja auch sein kann das man nicht als admin eingeloggt ist, dann machts probleme