问题标签 [elevation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vbscript - 检查脚本是否具有提升的权限
我想检查我的 VBscript 运行的上下文是否允许我执行管理任务。
要求:
- 该解决方案应该适用于从 Server 2003 开始的所有 Windows 操作系统。(这排除了仅检查管理员组成员身份的解决方案——记住在 Vista 和 Windows 7 中有 UAC!)
- 解决方案应该很简单。一个 50 LOC 解决方案,用于检查 Windows 组成员身份(当然,递归,因为用户可能是某个组的成员,而该组的成员是某个组的成员……它是 Administrators 组的成员),然后对 Vista 进行一些额外的检查UAC并不简单。
- 解决方案可能有点脏,所以按照这个解决方案的思路就可以了。
- 它不应该太脏。在我看来,将文件写入 C:\Windows 或写入注册表项太脏了,因为它会修改系统。(编辑:这可能无论如何都不起作用:例如,在 HTA 中使用 VBScript 时,UAC 重定向会启动。)
相关问题:https ://stackoverflow.com/questions/301860 (我在那里找到的所有答案(a)忽略了 UAC 问题和(b)是错误的,因为它们忽略了用户具有管理权限的可能性,尽管不是直接的管理员组中的成员)
windows-7 - 启动注册表项中需要提升的程序(Windows 7)
我有一个程序要在计算机启动时运行。我已将其路径放在“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”中。这是在 Windows 7 中。当计算机启动时,没有任何反应。我在想这是因为程序在运行时需要提升。但 Windows 不会请求提升权限,也不会提供任何反馈。它只是忽略它。我读过 Vista 告诉您该程序被阻止等。有人知道为什么 Windows 7 会忽略该应用程序吗?
非常感谢您提前。
阿里雷萨
internet-explorer - 使用提升的权限在 Internet Explorer 中加载 ActiveX DLL
我在 Internet Explorer 中使用 JavaScript 加载了一个 ActiveX 控件。它需要在 Vista 和 Win7 的 UAC 下以中等完整性运行。这是用 C/C++ 编写的,在 Visual Studio 中编译。
提升权限的一种方法是创建一个可以请求中等完整性级别的代理进程。但是,对于这个项目,这不是一个实际的解决方案。我真的需要 ActiveX 控件本身来运行提升。
我的问题是:最简单的方法是什么?我可以将项目的构建选项更改为 exe,并使用 COM 进程间连接系统自动处理通信,还是需要更复杂?我是否需要做一些复杂的事情,比如手动调用 CreateProcess 并制作某种代理,或者它可以作为一个提升自身的 ActiveX exe 工作吗?
.net - .NET Embedded Manifest 使 XP 崩溃
我在 .NET exe 中嵌入了一个清单,以便它可以在 Vista 和 Windows 7 中请求提升的权限。我使用的清单如下:
它在 Vista 和 Windows 7 中按预期工作,但 XP 因标准“...遇到问题并需要关闭...”错误而崩溃。如果我不嵌入任何清单,那么它会按预期工作,但显然在 Vista 和 Windows 7 中没有所需的权限。
生成在 XP 和 Vista / Windows 7 中以正确权限运行的 exe 的标准方法是什么?
谢谢,艾伦
windows-server-2008 - 如何允许管理员在没有 UAC 提升的情况下编辑我的应用程序的配置文件?
我的公司生产一个跨平台的服务器应用程序,它从用户可编辑的配置文件中加载其配置。在 Windows 上,配置文件 ACL 被我们的安装程序锁定,以允许所有用户读取,但仅限于管理员和本地系统进行编辑。
不幸的是,在 Windows Server 2008 上,即使是本地管理员也不再拥有管理员权限(因为 UAC),除非他们正在运行提升的应用程序。这引起了用户的抱怨,他们无法使用他们最喜欢的文本编辑器打开和保存配置文件更改——他们可以打开文件(因为任何人都可以阅读)但无法保存。
任何人都对我们可以在我们的应用程序设置中做什么(如果有的话)提出建议,以使 Windows Server 2008 上的管理员更容易进行编辑?
相关问题:如果 Windows Server 2008 管理员想要编辑仅限管理员的配置文件,他通常是如何进行的?他是否被迫使用足够智能的文本编辑器,以便在需要提升时自动提升,就像 Windows 资源管理器在响应拒绝访问错误时所做的那样?他是否从提升的命令提示符窗口启动编辑器?还有什么?
uac - 如何使用 INNO 设置创建 CMD.EXE 的快捷方式以请求提升?
使用 INNO 设置我目前在 [ICONS] 部分下有以下条目:
此快捷方式会直接在我的应用程序文件夹中启动命令提示符。不幸的是,它没有以提升的方式启动,这意味着用户从那里运行的命令没有适当的权限。
使用 INNO 安装程序,如何创建需要提升的 CMD.exe(在特定文件夹中)的快捷方式?
可以通过清单文件为其他应用程序执行此操作。我的问题是,我如何使用 INNO 使用它,如果我不能,我的替代方案是什么?
c# - 用于应用程序安装的 .NET 2.0 进程提升
我们有一个用 C++ 和 .NET 编写的应用程序,它为 Program Files 文件夹中的所有用户安装。此应用程序下载其自身的新版本(作为 MSI 安装程序)并生成新的安装程序进程以替换自身。
今天存在的安装过程:
- 将安装管理器应用程序(C#、.NET 2.0)复制到临时目录。称此“经理”
- 根据本文,Manager 以提升的权限执行。
- 原始应用程序退出。
- 管理器生成 MSI 安装程序(具有提升的权限,因为副本已提升)
- Manager 生成新版本的应用程序。
错误:
新安装的应用程序正在提升状态下运行。这会导致我不会在这里列举的问题。
理想情况下,新安装的应用程序的启动将以原始用户的权限运行。
我不知道如何在提升后将应用程序降级为标准用户。
一个不雅的hack:
(是的,是的,这整个过程无论如何都不优雅)
- 将安装管理器复制到临时目录
- 使用标准用户权限运行安装管理器。让我们将此实例称为“LowlyManager”。
- 原始应用程序退出。
- LowlyManager再次生成应用程序,这次是提升权限。让我们将此实例命名为“UpperManagement”
- UpperManagement 生成安装程序
- UpperManagement 正常退出,返回安装程序的退出代码。
- LowlyManager 解释来自 UpperManagement 的错误代码,并生成新安装的应用程序。这次作为原始调用者。
有一个更好的方法吗?
(我在这些步骤之前和之后遗漏了许多其他细节,这些步骤使用户的过程更顺畅,但这应该足以理解我要解决的问题的核心。)
其他需求:
- 我们无法安装为每用户应用程序
- 如果 UAC 只是询问“您确定要允许此操作吗?”,则不应向用户显示身份验证对话框。我认为这可能会破坏使用 WindowsImpersonationContext 的解决方案,但我不确定。
- 系统需要在 XP、Vista 和 Windows 7 上运行(即使 XP 有单独的进程)。
.net - 如何在 .NET 应用程序中按需提升和获取管理员权限?
我有一个 .NET 应用程序,它以当前用户的默认权限运行,然后在某些时候我需要执行一个需要管理员权限的操作。
如何在 .NET 应用程序中按需获得管理员权限?
要求从一开始就以管理员权限运行应用程序是不合适的,因为可能不会调用此类操作。
windows - 从临时文件夹运行已签名和 RequireAdministrator 可执行文件?
我将我的可执行文件显示为需要管理员:
然后我对其进行了数字签名。
但是当我运行可执行文件时,我注意到一些奇怪的事情:同意对话框上的可执行文件的名称从更改PingWarning.exe
为pinxxxx.tmp
;好像制作了一个临时副本,并且正在运行:
我挖出了 Process Montior,看看是否有人在我启动我的可执行文件时创建了*.tmp文件,并且有:
此特定容器内的应用程序信息服务有意将我的可执行文件复制到 Windows 临时文件夹,并从那里请求用户“同意”;给出一个无效的文件名。svchost
如果我不对其进行数字签名,则该文件不会复制到临时文件夹:
所以我的问题是当我对我的可执行文件进行数字签名时出现在同意对话框中的无效文件名已显示为.requireAdministrator
做什么?
更新:
我能找到的最接近解释的东西来自Uninformed.org :
打破经纪人
在请求 uiaccess 的程序的启动请求的情况下, 调用appinfo!RAiLaunchAdminProcess来为请求提供服务。然后验证该过程是否在appinfo!AiCheckSecureApplicationDirectory允许的目录集(硬编码)内 。在验证程序是从允许的目录中启动后,控制权最终传递给appinfo!AiLaunchProcess ,它执行为启动请求提供服务所需的剩余工作。此时,由于“安全”应用程序目录要求,受限用户(或以低完整性运行的用户,就此而言)不可能将自定义可执行文件放置在任何“安全”应用程序目录中。
提示是一些(未记录的、未指定的)硬编码路径,应用程序被“允许”位于其中。
另一个是用于请求 uiaccess 的程序。就我而言uiAccess="false"
,我的原始清单中没有。但是更改清单以包含无 ui 访问权限:
但这并没有解决原来的问题。
更新二:
来自MSDN:
SendSAS 函数
重要uiAccess标志设置为 true 的应用程序必须经过 Authenticode签名才能正常启动。此外,应用程序必须驻留在文件系统中受保护的位置。目前,有两个允许的受保护位置:
- **\程序文件**
- **\windows\system32**
这似乎支持了可执行请求uiAccess
必须位于允许的位置的概念。除了我不要求 uiAccess。
solr - solr 的每个查询相关性提升?
我想根据每个用户调整 solr 搜索结果的相关性 - 基于用户之前点击结果的次数。经常为该用户点击的项目应该上升到搜索结果的顶部。
有没有办法为查询中的特定文档 ID 提供自定义提升/提升?我正在考虑大约 100 份要提升的特定文件。如果查询的其余部分未找到这些文档,则提升应该无效。
或者,如果这是不可能的,那么建立另一种使这成为可能的索引方法的明智方法是什么?我可以在索引中为每个用户添加一个字段来存储他们的分数吗?我正在考虑大约 1000 个用户。这种方法的主要缺点是需要重新索引文档的次数(即每次用户使用它时)。