Why Access Denied while using ExitWindowEx(EWX_REBOOT)

mathe 2001-10-01 10:20:57
I am using Windows2000 Service Pack2.
And I am using one of Administrators Account to run my program.
It is very strange that ExitWindowEx(EWX_REBOOT,0) will return FALSE.
So I try to use InitiateSystemShutdown(NULL,NULL,5,FALSE,TRUE) & it return FALSE too. The GetLastError() tells that "Access Denied".

Another problem is that when I run MoveFileEx with MOVEFILE_DELAY_UNTIL_REBOOT|MOVEFILE_REPLACE_EXISTING,
the function return TRUE. But after I restart the computer, the file was not moved&replaced. And I could not find new items in register
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
as MSDN says.

Who can help me?
Following is my code:

CopyFile(UNINSTALL_PATH,TEMP_PATH,FALSE);
if(!MoveFileEx(TEMP_PATH,DESTINE_PATH,MOVEFILE_DELAY_UNTIL_REBOOT|MOVEFILE_REPLACE_EXISTING))
{//No Error reported here.
int Error=GetLastError();
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,Error,0,text,1024,NULL);
MessageBox(NULL,text,"MoveFileEx",MB_OK);
}
if(!InitiateSystemShutdown(NULL,NULL,5,FALSE,TRUE)){
int Error=GetLastError();//Access Denied reported.
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,Error,0,text,1024,NULL);
MessageBox(NULL,text,"InitiateSystemShutdown",MB_OK);
}
...全文
82 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
NowCan 2001-10-04
  • 打赏
  • 举报
回复
基本上可以肯定是权限不够。一般你建立的进程都不会有这个权限。解决方法同prog_st(st) 
Julienjut 2001-10-02
  • 打赏
  • 举报
回复
真是高手
又学到一招
不过没时间去试了
prog_st 2001-10-02
  • 打赏
  • 举报
回复
估计是在 WINNT 或 WIN2000 下权限不够的问题,请在执行 ExitWindowsEx 前执行以下函数
void CMyDlg::SetPriviles()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
MessageBox("OpenProcessToken Error !","Error");
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 Error !","Error");
return;
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧