void CShutDownComputerDlg::OnBtnShutdown()
{
// TODO: Add your control notification handler code here
HANDLE hToken = NULL;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
MessageBox("OpenProcessToken failed!");
} TOKEN_PRIVILEGES tkp = {0};
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); //调整获得的权限
if (GetLastError() != ERROR_SUCCESS)
{
MessageBox("AdjustTokenPrivileges enable failed!");
}
CString strBuf("由于系统不稳定,WINDOWS将在上的时间面内关机,请做好保存工作!");
//这里第一个参数设置成"局域网\\远程机器名"但是还是关机不成功,为什么啊????
BOOL bResult =InitiateSystemShutdown(NULL, strBuf, 10, TRUE, TRUE);
if(!bResult)
{
MessageBox("InitiateSystemShutdown failed.");
}
tkp.Privileges[0].Attributes = 0;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
{
MessageBox("AdjustTokenPrivileges disable failed.");
}
ExitWindowsEx(EWX_REBOOT,0);
}我现在可以关闭我自己的电脑成功,但是关闭局域网的其他电脑就不行,为什么啊???
大家帮我看看这个程序到底哪里出了错???不胜感激!!!
{
// TODO: Add your control notification handler code here
HANDLE hToken = NULL;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
MessageBox("OpenProcessToken failed!");
} TOKEN_PRIVILEGES tkp = {0};
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); //调整获得的权限
if (GetLastError() != ERROR_SUCCESS)
{
MessageBox("AdjustTokenPrivileges enable failed!");
}
CString strBuf("由于系统不稳定,WINDOWS将在上的时间面内关机,请做好保存工作!");
//这里第一个参数设置成"局域网\\远程机器名"但是还是关机不成功,为什么啊????
BOOL bResult =InitiateSystemShutdown(NULL, strBuf, 10, TRUE, TRUE);
if(!bResult)
{
MessageBox("InitiateSystemShutdown failed.");
}
tkp.Privileges[0].Attributes = 0;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
{
MessageBox("AdjustTokenPrivileges disable failed.");
}
ExitWindowsEx(EWX_REBOOT,0);
}我现在可以关闭我自己的电脑成功,但是关闭局域网的其他电脑就不行,为什么啊???
大家帮我看看这个程序到底哪里出了错???不胜感激!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货