问一个关于权限的问题

call_1963 2011-01-11 01:48:41
如何修改文件夹用户权限,或者自动提升软件权限。
我的软件在默认的win7或wista用户权限之下运行,无法创建配置文件,导致无法运行。要正常运行需要使用管理员身份运行程序才行。怎么样让软件在winows默认用户名下正常使用。 谢谢
...全文
270 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kye_jufei 2011-02-07
  • 打赏
  • 举报
回复
先manifest,或用shellexecute指定以管理员身份執行
learning8899 2011-01-13
  • 打赏
  • 举报
回复
UAC.manifest
a666999888 2011-01-12
  • 打赏
  • 举报
回复
我在以前在网上找到一个方法,你照着做一定成功,只是程序运行时会自动提示要管理员权限运行,点击一次是就可以了。比正常运行多一次点击应该算不得什么吧。
建3个文件:
1、文件:UAC.manifest
内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

2、文件名:UAC.res
内容:
  W   0 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

3、文件名:UAC.rc
内容:
1 24 UAC.manifest

这三个文件放到你的源代码文件夹,再在工程文件里添加{$R uac.res}
例:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res} {$R uac.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
gyk120 2011-01-12
  • 打赏
  • 举报
回复
权限控制界面是必须出现的,这是UAC标准,文件拖动功能肯定没法直接实现,要么直接关了UAC。
另外,如果向Windows目录下面写文件,就算有manifest或者管理员权限,也会被阻止
call_1963 2011-01-12
  • 打赏
  • 举报
回复
以上述方式修改,不管怎么样设置权限,都会有权限控制界面出现,而且 文件拖动功能是失效的,也不能直接F9运行,没发调试
mihi1978 2011-01-11
  • 打赏
  • 举报
回复
1楼是正解。。
call_1963 2011-01-11
  • 打赏
  • 举报
回复
在管理员权限之下运行, 将文件拖动到窗口打开会失效。正常情况下不会
bdmh 2011-01-11
  • 打赏
  • 举报
回复
win7,下即使是管理员权限,也不是可以为非作歹的
call_1963 2011-01-11
  • 打赏
  • 举报
回复
但我们公司不知道什么原因,安装的win7或wista系统时候,用户名虽然是管理员组的, 但是这个用户名依然是受限的。特别是老板的机器也是这样的, 软件安装之后以这个用户名运行时候不能写文件,导致无法创建配置文件,必须要以管理员身份运行。我现在就想把 我的exe文件目录的权限都改成所有用户完全控制。或者提高软件的权限,不受windows的权限控制
gyk120 2011-01-11
  • 打赏
  • 举报
回复
manifest就可以了
或者你可以用shellexecute指定以管理员身份运行
haitao 2011-01-11
  • 打赏
  • 举报
回复
mainfest也是让用户换个帐号再运行吧,如果能这样提权,好像很危险啊

程序能自己提权,已经是利用系统漏洞了

还是改为在用户的目录创建配置文件吧
虽然我也不喜欢在用户的目录创建配置文件,喜欢exe和ini在同一个目录
如果一定要多用户使用,多几个exe目录,或者一个exe目录,多个运行目录
bdmh 2011-01-11
  • 打赏
  • 举报
回复
可以代码,参考《windows核心编程》
或者,建立一个同名的,后缀为.mainfest的文件(含exe后缀)试试,里面包含

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">

<security>

<requestedPrivileges>

<requestedExecutionLevel

level="requireAdministrator"

uiAccess="false"/>

</requestedPrivileges>

</security>

</trustInfo>

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧