多谢
解决方案 »
- vc 6.0 windows socket异步多线程解析一串数据报,从第一串数据中截取标示符id,怎么绑定这个id?
- MFC中数据库操作的问题
- 我用SQL做的CS结构的数据库,客户端每次写记录的时候都需要写一个当时的时间到服务器数据库中,要想写进去的是服务器的时间,怎么实现?
- 大家常用的打包软件是什么呢!能不能给一个提示呵
- 关于改变窗体大小的问题!分数多多帮帮我呀!
- VC视频图像提取前景
- 紧急问个字符串处理问题
- 求助VC绘制闭合曲线
- error C2146: 语法错误: 缺少“;”(在标识符“m_wndCompile”的前面)
- 救命啊!急!
- Show tack bar
- 隐藏某些控件的时候,想移动其他的位置
1、 windows 2000、xp、2003没获得用户关机特权,没有用。怎样用以下两个windows函数
OpenProcessToken,LookupPrivilegeValue获得用户关机特权。
2、 关电源,要调用ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0 )
强制关机ExitWindowsEx(EWX_FORCE or EWX_SHUTDOWN or EWX_POWEROFF, 0 );
{
OSVERSIONINFO OSversion;
OSversion.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(&OSversion);
if (OSversion.dwPlatformId==VER_PLATFORM_WIN32_NT) // Windows NT
{
HANDLE hToken;
LUID DebugValue;
TOKEN_PRIVILEGES tkp;
//
// Retrieve a handle of the access token
//
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken)) {
//Your computer cannot shutdown, Check the user priviledges
MessageBox("Your computer cannot shutdown","Warning",MB_ICONERROR | MB_OK);
return;
}
//
// Enable the SE_SHUTDOWN_NAME privilege
//
if (!LookupPrivilegeValue((LPSTR) NULL,
SE_SHUTDOWN_NAME,
&DebugValue)) {
//Your computer cannot shutdown, Check the user priviledges
MessageBox("Your computer cannot shutdown","Warning",MB_ICONERROR | MB_OK);
return;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = DebugValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,
FALSE,
&tkp,
sizeof(TOKEN_PRIVILEGES),
(PTOKEN_PRIVILEGES) NULL,
(PDWORD) NULL);
//
// The return value of AdjustTokenPrivileges can't be tested
//
if (GetLastError() != ERROR_SUCCESS) {
//Your computer cannot shutdown, Check the user priviledges
MessageBox("Your computer cannot shutdown","Warning",MB_ICONERROR | MB_OK);
return;
}
}
// Power off the computer
// shutdown branching added by Dragongodz
switch(OSversion.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
ExitWindowsEx(EWX_POWEROFF|EWX_FORCE, 0);
break;
case VER_PLATFORM_WIN32_WINDOWS:
ExitWindowsEx(EWX_SHUTDOWN, 0);
}
}
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken);
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);
ExitWindowsEx(EWX_POWEROFF, 0);/*
关闭类型(UINT uFlags)可以是以下几种:
EWX_FORCE:强制关闭,Windows不会发送任何消息给正运行的程序,这可能导致数据丢失; EWX_LOGOFF:关闭所有正在运行的程序,注销当前用户并重新登录;
EWX_POWEROFF:关闭Windows并关机,系统必须支持电源管理;
EWX_REBOOT:关闭Windows并重新启动;
EWX_SHUTDOWN:关闭Windows,缓冲区内的数据将被写入磁盘。
*/