程序的开机关机重启,开机启动,休眠功能delphi实现(使用AdjustTokenPrivileges提升权限)
TShutDownStatus = (sdShutDown,sdReboot,sdLogOff,sdPowerOff);
procedure ShutDown(sdStatus : TShutDownStatus);
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);
case sdStatus of
sdShutDown: ExitWindowsEx(EWX_SHUTDOWN OR EWX_POWEROFF or EWX_FORCE,0);
sdReboot: ExitWindowsEx(EWX_REBOOT OR EWX_POWEROFF or EWX_FORCE,0);
sdLogOff:ExitWindowsEx(EWX_LOGOFF,0);
sdPowerOff:SetSystemPowerState(False,True);
end;
end;
{
函数功能:实现系统睡眠休眠功能
bHibernate : True 睡眠 False 休眠
}
procedure TEpComOper.SystemSleep(bHibernate:Boolean);
var
h_Module : THandle;
pSetSuspendState : function(hibernate,ForceCritical,DisableWakeEvent:Boolean):Boolean;
begin
h_Module := LoadLibrary('PowrProf.dll');
if h_Module <>0 then
begin
pSetSuspendState := GetProcAddress(h_Module,'SetSuspendState');
if @pSetSuspendState<>nil then
begin
pSetSuspendState(bHibernate,False,False);
end;
FreeLibrary(h_Module);
end;
end;
{设置取消程序的开机启动功能}
procedure TEpComOper.SetAppAutoRun(bRun : Boolean);
var
Reg:TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True);
if bRun then
Reg.WriteString(‘test’,Application.ExeName)
else
Reg.DeleteValue('test');
Reg.CloseKey;
finally
Reg.Free;
end;
end;
http://blog.csdn.net/zang141588761/article/details/51859129
程序的开机关机重启,开机启动,休眠功能delphi实现(使用AdjustTokenPrivileges提升权限)的更多相关文章
- windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)
对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...
- mac OS 查看开机/关机/重启记录
last 查看最近的开关机.登录用户等记录 以及操作时间节点. last | grep reboot 查看重启记录 last | grep shutdown 查看关机记录
- C# 操作电脑 关机 重启 注销 休止 休眠
// 关机 强制电脑10秒之内关机 //System.Diagnostics.Process.Start("shutdown", "-s -f -t 10"); ...
- ubuntu16.04 程序开机自启动设置及启动优化
使用过程中,为了方便使用,有一些程序需要开机时自启动应用,下面将介绍一下ubuntu16.04下程序的开机自启动设置方法. 1 建立一个可执行程序的运行脚本如 keepalive.sh.内部写入要执 ...
- android4.4 重启的开机不播放开机铃声,按power键的开机播放开机铃声
平台:A33Android4.4Linux3.4 功能描述:实现重启的开机不播放开机铃声,按power键的开机播放开机铃声 一,无论关机还是重启都会经过rebootOrShutdown这个方法,在方法 ...
- VMware workstation 非正常关机导致开机失败,解决方法
问题:VMware workstation 非正常关机导致开机失败!如下图:
- 让Android程序获得系统的权限,实现关机重启,静默安装等功能
引用:http://www.cnblogs.com/welenwho/archive/2012/05/10/2494984.html android想要获得系统权限有几种途径,一种就是你的程序固化的系 ...
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)
#region//开机自动运行 private void CB_Auto_CheckedChanged(object sender, EventArgs e) {//CB_ ...
- 开机SystemServer到ActivityManagerService启动过程分析
开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...
随机推荐
- gen_server笔记
http://www.ask3.cn/a/jingcaibowen/tech/Erlang/2013/0614/42043.html gen_server是erlang的OTP框架中最常用的“行为模式 ...
- 通过手机其他iOS应用打开此文件
根据所处理文档的格式,提供本地设备(InApp)能处理该格式文档的所有应用(App).比如,demo中所处理的是pdf格式的文档,那么可以打开该文档的本地app有邮件.打印等等.仅支持ARC. dem ...
- kindeditor 4 上传下载文件
jsp代码 1 <script type="text/javascript" src="${pageContext.request.contextPath}/kin ...
- CodeBlocks提供了预编译的WxWidgets模块,并预置TDM
Miscellaneous For Windows, we also provide the pre-compiled wxWidgets, version 2.8.12 used to compil ...
- mkdir-无法创建目录(单层目录中子目录的个数默认为32000个)
今天运行在一台机器上的脚本突然通知无法创建目录了,上去执行shell脚本,也出现同样的错误,如下: $ mkdir test mkdir: 无法创建目录"test": 过多的连接 ...
- ubuntu 在配置MySQL维修
第一步 设备MySQL sudo apt-get install mysql-server 第二步骤 构造MySQL 2.1 vim /etc/mysql/my.cnf 到场bind-address ...
- Asp.net C# 获取本周上周本月上月本年上年第一天最后一天时间大全
DateTime dt = DateTime.Now; int weeknow = Convert.ToInt32(DateTime.Now.DayOfWeek); ) * weeknow + ; D ...
- 如何获得iframe中元素的值
在Web开发时,很多时候会遇到一个问题.我在一个页面嵌入了iframe,并且我想获得这个iframe页面某个元素的值.那么该如何实现这个需求呢? 先来看下演示: 效果演示 iframe1中文本 ...
- 简明Python3教程 11.数据结构
简介 数据结构基本上就是 – 可以将一些数据结合到一起的结构,换言之用于存储一组相关的数据. python拥有4种内建数据结构 – 列表,元组(tuple),字典和集合. 我们将看到如何它们,它们又是 ...
- c#调用ffmpeg嵌入srt/ass字幕提示Unable to open xxx.srt......
最近接触到c#调用ffmpeg嵌入srt/ass字幕,碰到一个错误困扰了很久 Unable to open xxx.srt Error initializing filter 'subtitles' ...