首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

局域网内远程关机的有关问题

2011-12-31 
局域网内远程关机的问题void CShutDownComputerDlg::OnBtnShutdown(){// TODO: Add your control notifica

局域网内远程关机的问题
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);
}

我现在可以关闭我自己的电脑成功,但是关闭局域网的其他电脑就不行,为什么啊???
大家帮我看看这个程序到底哪里出了错???不胜感激!!!




[解决办法]
权限

http://vip.6to23.com/NowCan1/tech/netshutd.htm

热点排行