is it possible to write a program which will shutdown the remote systme in c?
Please try,
BOOL RemoteShutdown(LPSTR szMachine,LPSTR szMessage,DWORD dwTimeout,BOOL bForce,BOOL bReboot) {
BOOL bRS=FALSE;
HANDLE hToken;
TOKEN_PRIVILEGES tpvPrivileges;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
if(LookupPrivilegeValue(NULL,SE_REMOTE_SHUTDOWN_NAME,&(tpvPrivileges.Privileges[0].Luid))) {
tpvPrivileges.PrivilegeCount=1;
tpvPrivileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
if(AdjustTokenPrivileges(hToken,FALSE,&tpvPrivileges,sizeof(TOKEN_PRIVILEGES),NULL,NULL))
bRS=InitiateSystemShutdown(szMachine,szMessage,dwTimeout,bForce,bReboot);
}
return(bRS);
}
Tested locally. I Don't have a network to try a working case.
szMachine: either name or IP should work.
szMessage*: some blah's for remote user to be aware of your action.
dwTimeout*: how many seconds to show your blah's.
bForce: close all applications with no confirmation.
bReboot: follow shutdown with a restart.
*(NULL,0): inmediate shutdown.
RemoteShutdown() returns TRUE on success.