int ShutdownR(AnsiString msg,AnsiString name,bool force,bool reboot ,DWORD time)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//-------------------
//char *name=""; // address of name of computer to shut down
//char *msg=""; //address of message to display in dialog box
//DWORD time=100; // time to display dialog box
//bool force=true; // force applications with unsaved changes flag
//bool reboot=true; //reboot flag
//---------------------------------------------------------------------
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken);
if(!LookupPrivilegeValue(name.c_str(), SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid)){
ShowMessage("SE_SHUTDOWN_NAME Privilege ????? \n");
return 1;};
tkp.PrivilegeCount =1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
if(!LookupPrivilegeValue(name.c_str(),
SE_REMOTE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid)){
ShowMessage("SE_REMOTE_SHUTDOWN_NAME Privilege \n");
return 2;};
tkp.PrivilegeCount =1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
if (InitiateSystemShutdown(name.c_str(),msg.c_str(),time,force,reboot))
ShowMessage(" shutdown Ok\n");
else ShowMessage("Can't shutdown \n");
return 0;
}
Перезагрузка удаленого ПК
Наперёд благодарю
Цитата:
Originally posted by Kashuk
Както я встречался с кодом, который перегружает машину по сети, счас я его потерял, а как сделать не помню, Може поможите???
Наперёд благодарю
Както я встречался с кодом, который перегружает машину по сети, счас я его потерял, а как сделать не помню, Може поможите???
Наперёд благодарю
Для этого вроде как нужно обладать правами администрирования сетевой машины.
Цитата:
Originally posted by ALI
Код:
int ShutdownR(AnsiString msg,AnsiString name,bool force,bool reboot ,DWORD time)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//-------------------
//char *name=""; // address of name of computer to shut down
//char *msg=""; //address of message to display in dialog box
//DWORD time=100; // time to display dialog box
//bool force=true; // force applications with unsaved changes flag
//bool reboot=true; //reboot flag
//---------------------------------------------------------------------
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken);
if(!LookupPrivilegeValue(name.c_str(), SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid)){
ShowMessage("SE_SHUTDOWN_NAME Privilege ????? \n");
return 1;};
tkp.PrivilegeCount =1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
if(!LookupPrivilegeValue(name.c_str(),
SE_REMOTE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid)){
ShowMessage("SE_REMOTE_SHUTDOWN_NAME Privilege \n");
return 2;};
tkp.PrivilegeCount =1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
if (InitiateSystemShutdown(name.c_str(),msg.c_str(),time,force,reboot))
ShowMessage(" shutdown Ok\n");
else ShowMessage("Can't shutdown \n");
return 0;
}
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//-------------------
//char *name=""; // address of name of computer to shut down
//char *msg=""; //address of message to display in dialog box
//DWORD time=100; // time to display dialog box
//bool force=true; // force applications with unsaved changes flag
//bool reboot=true; //reboot flag
//---------------------------------------------------------------------
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken);
if(!LookupPrivilegeValue(name.c_str(), SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid)){
ShowMessage("SE_SHUTDOWN_NAME Privilege ????? \n");
return 1;};
tkp.PrivilegeCount =1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
if(!LookupPrivilegeValue(name.c_str(),
SE_REMOTE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid)){
ShowMessage("SE_REMOTE_SHUTDOWN_NAME Privilege \n");
return 2;};
tkp.PrivilegeCount =1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
if (InitiateSystemShutdown(name.c_str(),msg.c_str(),time,force,reboot))
ShowMessage(" shutdown Ok\n");
else ShowMessage("Can't shutdown \n");
return 0;
}
А ты не проверял, этим можно перегружать машины в сети с 98 виндой.
Цитата:
Originally posted by Kashuk
А ты не проверял, этим можно перегружать машины в сети с 98 виндой.
А ты не проверял, этим можно перегружать машины в сети с 98 виндой.
только NT