微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从临时文件夹运行签名和RequireAdministrator可执行文件?

我表明我的可执行文件需要pipe理员:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <!-- disable Windows Vista UAC compatability heuristics --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>

然后我数字签名。

但是当我运行可执行程序的时候,我发现了一些奇怪的东西: 同意对话框上的可执行文件名从PingWarning.exe更改为pinxxxx.tmp ; 就好像一个临时副本已经被创build,并且正在运行:

替代文字http://img.zgserver.com/windows/nmkppz.png

boost :: mpi阻塞IO没有被linux信号中断

阻塞和非阻塞套接字有什么区别? (对于realz版)

如何使用bjam构buildboost示例?

为Windows事件提升等效性

C ++ Boost:在大多数Linux发行版中认包含它吗?

我挖出了Process Montior,看看有没有人在启动我的可执行文件时创build一个* .tmp文件,并且有:

替代文字http://img.zgserver.com/windows/10o1b8g.png

在这个特定的svchost容器中的应用信息服务有意地将我的可执行文件复制到Windows临时文件夹,并从那里要求用户“同意” 给一个无效的文件名。

一旦获得同意,可执行文件将从原始位置运行: link text http://img.zgserver.com/windows/104noub.png

文件不复制到临时文件夹,如果我没有数字签名:

替代文字http://img.zgserver.com/windows/14kvevd.png

所以我的问题是无效的文件名出现在同意对话框,当我数字签署我的可执行文件已经performance为requireAdministrator 。

做什么?

更新:

最接近我能find的解释来自Uninformed.org ( http://uninformed.org/index.cgi?v=8&a=6&p=3 ):

在请求uiaccess的程序的启动请求的情况下,调用appinfo!RAiLaunchAdminProcess来为请求提供服务。 然后通过appinfo!AiCheckSecureApplicationDirectoryvalidation该进程在允许目录的(硬编码)集合内。 validation程序是从允许的目录中启动后,控制权最终会传递给appinfo!AiLaunchProcess ,它执行剩下的工作来维护启动请求。 此时,由于“安全的”应用程序目录要求,对于有限的用户(或者用户以低廉的完整性运行的用户)不可能将自定义可执行文件放置在任何“安全的”应用程序目录中。

提示是应用程序“允许”位于的一些(未logging的,未指定的)硬编码path。

一个要求uiaccess的程序 。 在我的情况下,我没有在我原来的清单uiAccess="false" 。 但是改变清单以包含no ui access:

但是这并没有解决原来的问题。

更新二:

来自MSDN():

重要

将uiAccess标志设置为true的应用程序必须经过Authenticode签名才能正常启动。 另外,应用程序必须位于文件系统中的受保护位置。 Program Files 和 windows system32

目前是两个允许的保护地点。

这似乎是备份一个请求uiAccess的可执行文件必须在允许的位置的概念; 除非我不要求uiAccess。

可以在linux程序中使用msvc来增强build立在Windows上的lib

如何在Linux中使用boost

环绕文件映射杀死性能

可能的编译器错误:在两台机器之间使用英特尔编译器使用boost bessel函数的奇怪结果?

不支持为ARM平台编译桌面应用程序

我看到了与未签名的应用程序相同的问题,特别是与NSIS和InnoSetup安装程序(1gb +安装程序复制到%windir% temp,然后通过consent.exe扫描时有点问题)

NSIS错误跟踪器有一个关于它的条目 。 当我调查这件事的时候,我曾经和MS联系过,他们应该联系在UAC工作的人,但事实并非如此。 我从这次谈话中得到的唯一适用的信息是这样的一句话:

在Windows中的一个朋友有一个模糊的回忆,这可能是一个缓解文件篡改的问题,而信任对话框显示

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐