void WinShutdown(UINT ShutdownFlag)
{
OSVERSIONINFO oi;
oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&oi); if (oi.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
HANDLE handle;
TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handle);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(handle, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES)NULL, 0);
} ::ExitWindowsEx(ShutdownFlag,0);}在win2000server下能关机,只是报错cmd.exe,请问何故? 请指教! 谢谢!
{
OSVERSIONINFO oi;
oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&oi); if (oi.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
HANDLE handle;
TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handle);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(handle, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES)NULL, 0);
} ::ExitWindowsEx(ShutdownFlag,0);}在win2000server下能关机,只是报错cmd.exe,请问何故? 请指教! 谢谢!
解决方案 »
- 给对话框添加WM_CTLCOLOR响应事件函数,报属性值无效,这个是为什么
- 基于对话框的工程,怎样用非模态对话框代替模态对话框?
- 请问使用什么软件可以实现下面的文本替换
- 数组 转指针, 为什么不行呢????
- 怎么把一个字符串转化为十进制数
- 怎么回事,结贴了啊,怎么还是带个问号。俺还有个问题,CEditView类中的滚动条是自带的吗?
- 谁用过异常吗,异常的处理器在一个工作线程,抛出异常的部分在另外一个线程里面,这样可以吗?
- 下载了一个C程序,没有工程文件,我建立了工程文件又不能编译,但是里面有个makefile 不知道怎么编译?
- 我写的程序为什么在Debug状态下Compile,Build,Run均没什么问题,在Release下Compile,Build没问题,但Run时,出现了“内存读”的消息提示
- 关于显示图形的难题,求助,奉送100分
- 有关TCP的断线和重连问题
- "多媒体音频控制器"加了黄色问号,它是什么东西?需要什么样的驱动?
static TOKEN_PRIVILEGES tp;
static LUID luid;
::OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken ) ;
::LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &luid );
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
::AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL );
::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);