我试了一下有些文章上的说法,大多都是在98下进行的,到了xp 下时就不灵了,请高手帮忙
解决方案 »
- ODAC控件缺少OraNet.pas文件
- 俺马上要升级了,现给咱家小宝宝征名,兄弟姐妹多多建议,谢谢。
- 如何用改引用表来取得API地址?
- 如何程序控制ComBobox下拉出选项来?
- 如何把Formshow中创建的窗体成为活动窗体
- Error loading midas.dll 是怎么回事?
- 我原来用的宽带是单机用户,现在我想让几台机器共享,能实现吗?如能解决,高分相送。
- 如何更改开始菜单的"开始"两字,可以移动,隐藏,就是改不掉这两个字,哪位高手帮帮忙。
- 哪位对hook技术编程有所了解,请进!
- 我想从vb转到delphi,有这个必要吗?
- 请问Delphi有没有封装‘security.dll’或者 'secur32.dll' 这个模块?
- 请高手帮帮:把一个目录下的文件名遍历到listview上
var
NewState: TTokenPrivileges;
lpLuid: Int64;
ReturnLength: DWord;
ToKenHandle: Cardinal;
begin
OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES
OR TOKEN_ALL_ACCESS
OR STANDARD_RIGHTS_REQUIRED
OR TOKEN_QUERY,ToKenHandle);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',lpLuid);
NewState.PrivilegeCount:=1;
NewState.Privileges[0].Luid:=lpLuid;
NewState.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
ReturnLength:=0;
AdjustTokenPrivileges(ToKenHandle,False,NewState,0,nil,ReturnLength);
end;
var
hProcess, hAccessToken: THandle;
LUID_AND_ATTRIBUTES: TLUIDAndAttributes;
TOKEN_PRIVILEGES: TTokenPrivileges;
BufferIsNull: DWord;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
//VER_PLATFORM_WIN32s = 0;
//VER_PLATFORM_WIN32_WINDOWS = 1;
//VER_PLATFORM_WIN32_NT = 2;
if Win32PlatForm = VER_PLATFORM_WIN32_NT then
begin //WindowsNT
hProcess := GetCurrentProcess;
OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hAccessToken);
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, LUID_AND_ATTRIBUTES.Luid);
LUID_AND_ATTRIBUTES.Attributes := SE_PRIVILEGE_ENABLED;
TOKEN_PRIVILEGES.PrivilegeCount := 1;
TOKEN_PRIVILEGES.Privileges[0] := LUID_AND_ATTRIBUTES;
BufferIsNull := 0;
AdjustTokenPrivileges(hAccessToken, False, TOKEN_PRIVILEGES, sizeof(TOKEN_PRIVILEGES), nil, BufferIsNull);
end;
ExitWindowsEx(EWX_POWEROFF, 0);
end;