请问在win2000下调用关闭系统api运行出错,提示没有运行权限,在win98下可以,怎么办? 2000下必须有Administrator权限(偶是看书上说的) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你需要调用AdjustTokenPrivileges函数给当前进程授权:procedure AdjustToken; Const TOKEN_ADJUST_PRIVILEGES = $20; TOKEN_QUERY = $8; SE_PRIVILEGE_ENABLED = $2;var hdlProcessHandle,hdlTokenHandle:THandle; tmpLuid :TLargeInteger; tkp :TTOKENPRIVILEGES; lBufferNeeded : DWord;begin SetLastError(0); hdlProcessHandle := GetCurrentProcess(); OpenProcessToken(hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle); LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid); tkp.PrivilegeCount := 1; tkp.Privileges[0].Luid := tmpLuid; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hdlTokenHandle, False, tkp, 0, nil, lBufferNeeded);end;解决了的话,记得给俺分哟。 我是在Administrator权限下执行的程序啊 书上说,对于Windows NT(2000就是NT5.0),参数为0(LOGOFF)不需特权.参数为1(shutdown),2(REboot)需要SE_SHUTDOWN_NAME特权.不知道实际怎样.没有试过 unionsoftzboy(unionsoftzboy) 的方法我试了,不需要直接关掉机器电源 希望:unionsoftzboy(unionsoftzboy)帮我解决能够关掉电源的问题 delph模拟点击网页按钮[不知ID怎样点击] 如何统计多个日报表 Screen.Cursor := crHourGlass;是什么意思? 有关反利用GHOST进行盗版的问题 如何在while循环中做其他的操作,急! 我用clientdataset去修改一个记录,为什么修改不成功呢 两个query查询结果交换值出错,我的这个代码错在何处? 这里有GIS编程高手吗? 一个奇怪的Delphi问题! 调用DLL出现的很奇怪的问题(给出好的意见也给分) 如何在excel与数据库之间传递记录? 关于最小化到系统栏
procedure AdjustToken;
Const TOKEN_ADJUST_PRIVILEGES = $20;
TOKEN_QUERY = $8;
SE_PRIVILEGE_ENABLED = $2;
var
hdlProcessHandle,hdlTokenHandle:THandle;
tmpLuid :TLargeInteger;
tkp :TTOKENPRIVILEGES;
lBufferNeeded : DWord;
begin
SetLastError(0);
hdlProcessHandle := GetCurrentProcess();
OpenProcessToken(hdlProcessHandle,
(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle);
LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Luid := tmpLuid;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hdlTokenHandle,
False,
tkp,
0,
nil,
lBufferNeeded);end;
解决了的话,记得给俺分哟。
参数为1(shutdown),2(REboot)需要SE_SHUTDOWN_NAME特权.
不知道实际怎样.没有试过