如何在Windows NT中编程实现关机? (50分)

  • 主题发起人 主题发起人 rong
  • 开始时间 开始时间
R

rong

Unregistered / Unconfirmed
GUEST, unregistred user!
当我用ExitWindows or ExitWindowsEx 来关闭NT时
不管用那个参数,它都只是Logout而没有shutdown,
请问是怎么回事,该如何才能Shutdown NT机器.
 
ExitWindowsEx :

for Windows NT:
To shut down or restart the system, the calling process must use the
<font color="red">AdjustTokenPrivileges</font> function to enable the <font color="red">SE_SHUTDOWN_NAME</font> privilege.
For more information about security privileges, see <font color="red">Privileges</font>.
 
看了一下AdjustcTokenPrivileges的帮助,感觉一头雾水。
茶叶蛋,你能举个例子来具体说明一下如何用AdjustTokenPrivilegs
函数使SE_SHUTDOWN_NAME权限 enable吗?thanks
 
Hi!

Here is C++ example code, wish it can help you

BOOL GetShutdownPrivileg()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;

// SE_SHUTDOWN_NAME must be enabled
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken))
return FALSE;

//Get a LUID for SE_SHUTDOWN_NAME privilege
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);

// PrivilegeCount enables more than one privilege to be set at a time.
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// Some privileges are initially disable, so each process must adjust
// the privilege by calling AdjustTokenPrivilege
return AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0);
}
 
rong:
这个问题已经很长时间没有人参加讨论,为保持版面
整洁,节约网友时间,请提问者采取必要处理措施。
关于本版管理细则,请参见<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这个</a>问题。如两天
内提问者没有响应,我将采取强制措施。

如有管理建议,请到<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这里</a>提出。谢谢!
 
我这里有一组件:TShutDown,可完成NT系统关机要求
 
其实倒不需要什么控件,等我明天安装好Delphi, 直接把上面的例子改称pascal的就行了
 
多人接受答案了。
 
后退
顶部