因为是WIN7系统,程序运行时有的设置需要触及到UAC。但是网上找的方法都不行,有的方法使用了根本没反应;另外虽然能产生uac盾牌,但在编译时会出现一个错误:[DCC Error] E2161 Warning: Duplicate resource: Type 24 (user-defined), ID 1; File E:\DELPHI\Project1.res resource kept; file uac.res resource discarded
我想用过WIN7的坛友都会认为WIN7是大势所趋的,大家帮我想想办法吧 感激不尽。。
我想用过WIN7的坛友都会认为WIN7是大势所趋的,大家帮我想想办法吧 感激不尽。。
解决方案 »
- 有没有专门介绍indy组件页的整体说明呀
- 老婆大人走了,她说要带别人的老公回来。就睡在原来属于我们两个人的床上。怎么办?
- 问问 哪里有免费的这样的东西 给我用用 急!!!本人就20 分了 在线
- DbGrid分行显示
- 自学编程也有两年了,对VB\VC\DELPHI\JAVA\ASP都有所了解,看一些代码也能看懂个70-80%,可是要编个东西就是无从下手,不知该如何提高?请
- 给个思路,业绩考核程序,高分相赠!
- 50分求delphi6 Personal Edition序列号,试过z9j8-pum4n…但不是,在线等
- 谁能提供一个自定义报表的例子 源程序.200高分
- Delphi里如何将QRChart绘制的图片保存到硬盘
- 一个对SQLSERVER数据库作delete操作时的错误!请指教!
- 关于字符换行
- ??? 如何让鼠标在DBGrid内部不同列移动时,显示当前单元格Hint值 ???
....真的假的http://hi.baidu.com/ca/blog/item/73ba4182debac7a70cf4d2c5.html我觉得应该是文章里UAC.manifest的问题,可惜不会xml...继续顶贴。
L"runas",
L"C:\\Windows\\Notepad.exe",
0, // params
0, // directory
SW_SHOWNORMAL);
无法运行,manifest才是解决uac问题的门路
2. ShellExecute runas 在 win7 下正常
3. win7 早在7月22号就已经rtm了,而且根据 hash 就是7月13号就已经发布的7600.16385,msdn版也早就发布了。零售版没上架不代表“还没有发行”
7月末就已经RTM了,10月月末正式发布只是走个形式而以,大多OEM厂商在8月初就拿到母盘了
第一点确实如楼上所说,但是这样程序图标也消失了,application里的icon选项为灰色。
程序是自己用的话还可以这样,但是不能要求每位用户都这样啊,那样vista跟win7重要安全特性就完全被抛弃了。。
<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>
保持为UAC.manifest,这里文件是随意的。特别注意红色的“requireAdministrator”,这个表示程序需要管理员(Administrator)才能正常运行。 2、然后编辑一个RC文件,名为uac.rc 1 24 UAC.manifest 其中: 1-代表资源编号 24-资源类型为RTMAINIFEST UAC.manifest-前面的文件名称 3、用brcc32编译这个rc文件为res文件 brcc32 uac.rc -fouac.res 4、在程序里面加入 {$R uac.res} 让Delphi编译的时候,把uac.res编译进exe文件 5、把文件放到vista里面运行,就会看程序图标下面显示UAC盾牌标志了。
说的就是这个方法,按你说的把{$R *.res} 删除,再加上{$R uac.res} 是可以编译,但是程序图标会丢失。请问你试过了吗
不能并存,不然就会出现上面的提示“[DCC Error] E2161 Warning: Duplicate resource: Type 24 (user-defined), ID 1; File E:\DELPHI\Project1.res resource kept; file uac.res resource discarded ”
把uac.res的名称变成程序那个名称的RES程序里继续用{$R *.res}是不是这样的意思啊?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
{$R uac.res} procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:='我靠';
end;end.你是编写DLL啊,我的怎么没有{$R *.res}
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
改为
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
另存为requireAdmin.manifest2.打开WindowsXP.rc,将内容编辑成
并另存为requireAdmin.rc3.通过命令行编译成requireAdmin.res4.把编译出来的文件requireAdmin.res放到$(BDS)\lib目录下5.在需要的程序当中,打开Project菜单下的Options...菜单项,将Application下面的"Enable runtime themes"的勾选去掉.6.打开Project菜单下的View Source菜单项,然后在
{$R *.res}
下面添加一行
{$R requireAdmin.res}7.重新编译即可.
那不是绕过UAC机制了吗?话题怎么变成入侵系统了。我太困了,明天再聊吧 咕噜咕噜。。
在Delphi主菜单中选Project -> Options... -> Version Info 窗口中的 ProductName 中填上含有“Setup”, ”Install” , “Update” 等任一字符串编译后Exe文件图标上就会出现盾牌了! 这个方法由UAC的本地安全策略“检测安装程序”所控制。如果该策略设置为无效,则无效。默认是有效的。 当然,这种安装包也可以强行设置为非管理员权限运行。
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>Delphi7下的文件里找描述字符不是这样的,而是:<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="DelphiApplication"
version="1.0.0.0"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
</assembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="DelphiApplication"
version="1.0.0.0"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
uiAccess="false"/> </requestedPrivileges> ,把asInvoke改成requireAdministrator,保存就可以了。
参考这篇文章能找到解决办法