void ShutDown()
{
if (dwVersion < 0x80000000) // for win2000 or later
{
TOKEN_PRIVILEGES tkp,tkpnewbutignored;
HANDLE hdltokenhandle;
LUID tmpluid;
BOOL rc;
DWORD lbufferneeded;
HANDLE hdlprocesshandle = GetCurrentProcess();
rc = OpenProcessToken(hdlprocesshandle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hdltokenhandle);
rc = LookupPrivilegeValue("","SeShutdownPrivilege", &tmpluid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Luid = tmpluid;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
rc = AdjustTokenPrivileges(hdltokenhandle,FALSE,&tkp,sizeof(tkpnewbutignored),&tkpnewbutignored, &lbufferneeded);
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE, 0);
}
else // for win9X
{
ExitWindowsEx(EWX_SHUTDOWN,0);
}
{
if (dwVersion < 0x80000000) // for win2000 or later
{
TOKEN_PRIVILEGES tkp,tkpnewbutignored;
HANDLE hdltokenhandle;
LUID tmpluid;
BOOL rc;
DWORD lbufferneeded;
HANDLE hdlprocesshandle = GetCurrentProcess();
rc = OpenProcessToken(hdlprocesshandle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hdltokenhandle);
rc = LookupPrivilegeValue("","SeShutdownPrivilege", &tmpluid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Luid = tmpluid;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
rc = AdjustTokenPrivileges(hdltokenhandle,FALSE,&tkp,sizeof(tkpnewbutignored),&tkpnewbutignored, &lbufferneeded);
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE, 0);
}
else // for win9X
{
ExitWindowsEx(EWX_SHUTDOWN,0);
}
解决方案 »
- UDP当recvfrom时,有没有办法知道数据是发到本地的哪个IP
- 窗口分割,1行2列成功,2行1列弹出一个终止对话框
- MFC关于加载位图后的资源释放和内存清理工作
- 程序忽然不能设置断点
- 各位请进,动态库中导出对话框资源的问题
- CList 序列化中特例化实现
- 急!为什么将.ico文件中的图形粘贴到工具栏中后运行程序发现工具栏中的图片色彩失真???
- 在IE插件中有没有什么方法获得IE设置的代理服务器信息?
- 如何在MFC程序中不使用Unicode编译而创建支持Unicode的窗口?
- 高分----求文件映像格式大全!!!
- 我想在动态库初始化DllMain时弹出一个对话框,当用户调用这个DLL时就先弹出我这个框,谢谢了
- 如何在动态库DllMain中加载一个对话框????????
时就无法关机了。