vc 6.0 中使用ExitWindowsEx注销操作直接可以成功。但关机和重起都失败了。
关机时是不是还要设置process特权阿?
请大虾指教。
关机时是不是还要设置process特权阿?
请大虾指教。
解决方案 »
- 纯资源DLL文件(含Custom Control控件)为何创建不成功
- VC++6.0中类指针的问题
- 我有个C++的程序,能用VC把它搞成EXE文件吗?
- 如何获取枚举所有用户注册表值
- 今天生四个角了,高兴,散分
- WindowsXp何Windows2000professional可以装在一起吗?
- 谁有流星雨效果的动画,高分求(急,在线等!)
- BCGControlBar 那儿有?
- 问个 编程方法问题? 关于怎么处理 多个客户端请求连接的问题?
- to:asia(),hushuo,seesea,inside1以及各位大虾,可以再给小女子讲一下指针的问题吗?
- 请教:图片画成这个样子是什么原因?
- 最近在思考一个网络模型。准备用select模型来实现一个类似完成端口的可扩展服务组件
{
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
GetVersionEx(&osv);
if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
HANDLE hProcess,hToken;
TOKEN_PRIVILEGES Privileges;
LUID luid;
hProcess=GetCurrentProcess();
OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
Privileges.PrivilegeCount=1;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
Privileges.Privileges[0].Luid=luid;
Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
}
ExitWindowsEx(EWX_POWEROFF,0);
}
{
OSVERSIONINFO osversioninfo;
osversioninfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(&osversioninfo);
int nID=osversioninfo.dwPlatformId;
if(nID<=1)
goto Exit;
HANDLE Handle;
Handle=::GetCurrentProcess();
HANDLE HandleProcess;
OpenProcessToken(Handle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&HandleProcess);
LUID tmpLuid;
LookupPrivilegeValue(NULL,"SeShutdownPrivilege",&tmpLuid);
TOKEN_PRIVILEGES tkpNew;
TOKEN_PRIVILEGES tkpPrevious;
tkpNew.PrivilegeCount=1;
tkpNew.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
tkpNew.Privileges[0].Luid=tmpLuid;
DWORD lbufferNeeded;
AdjustTokenPrivileges(HandleProcess,false,&tkpNew,sizeof(tkpPrevious),&tkpPrevious,&lbufferNeeded);
Exit:
ExitWindowsEx(EWX_FORCE|EWX_REBOOT,0);
}