delphi7编译的程序win7下如何[根据需要]获取管理员权限?
因为我的程序需要添加启动项,所以要以管理员权限运行.
网上的答案(Delphi程序在资源里面嵌入MANIFEST信息)我试过了,可以.不过这样带来了一个问题.
就是我的程序已经添加完启动项后,每次WIN7重启动的时候,都会询问用户是否已管理员身份运行.
而这个时候我已经不需要再添加启动项了,这个时候程序不需要管理员权限,应该直接运行.
能不能做到,判断有没有添加启动项,没有则已管理员权限运行,提示用户添加启动项,如果已经添加了,就以普通用户运行,不要再询问用户了?
已经查了很久了,没有答案,请高手帮下忙.谢谢!
[解决办法]
判断启动项应该不难,如果是注册表启动,检测自己添加的键值是否存在就行了。
至于是以admin还是User的身份执行,CreateProcessAsUser函数不知可不可。
还有一个办法,A.exe(包含MANIFEST)第一次执行 复制自身到 B.exe,并添加启动项,
启动项启动的是B.exe,然后A.exe删除B.exe里面的MANIFEST资源,这样机器重启后启动的是
B.exe 而B程序已经没有MANIFEST资源了。
[解决办法]
通过设置一个命令行参数,比如setreg
假设FileName是你的exe文件路径
if (命令行有setreg) then 添加启动项
else
begin
if(未设置启动项)then begin
ShellExecute(nil,'runas',FileName,'setreg',nil,0);
end;
.....
end
[解决办法]
这样就不要那个manifest
[解决办法]
我一般都是在安装包做这个事情。还可以控制版本什么的