问题标签 [uipi]

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.

0 投票
0 回答
482 浏览

c# - 如何正确启用服务的 UI 访问?

我运行一个(C#)服务,该服务将一些键盘输出到其他 UI 应用程序,就像虚拟键盘一样。

Windows 安全性(更准确地说UIPI)限制了我这样做的服务。

为了绕过 UIPI,我为我的服务创建了一个清单,其中 UIAccess 标志设置为 "true" :

关于文档,服务必须遵守两个条件才能提升到 UIAccess :

  1. 服务必须经过数字签名
  2. 该服务必须从安全位置运行(管理员只能进行 R/W 访问,例如 C:\Program Files)

我的服务尊重这两个条件。

当我尝试启动我的服务时,我收到以下错误:

错误 740:请求的操作需要提升

我认为我的服务会自动提升并能够使用 UIAccess 运行。我错过了什么?

其他炎症 :

  • 该服务正在运行本地系统帐户
  • 该服务以“asInvoker”执行级别运行
  • 我尝试禁用以下本地策略:“仅提升安装在安全位置的 UIAccess 应用程序”和“仅提升已签名和验证的可执行文件”
0 投票
0 回答
149 浏览

electron - 如果非管理员用户以提升的权限 (uiAccess=true) 打开 Electron 将忽略 loadURL() 调用

我们有一个 EXE 打包的 Electron 应用程序,它需要在 Windows 下以提升的权限 (uiAccess=true) 运行,以防止用户在全屏运行时访问 Windows。

在清单文件中设置uiAccess="true"会导致一个问题:任何loadURL()调用都会被静默忽略,对于本地目录中的 HTML 文件和本地运行的 HTTP 服务器都是如此。

  • uiAccess设置为false通话loadURL()效果很好,适用于任何用户
  • 只有当EXE 由具有管理员权限的用户运行(即使没有“以管理员身份”运行),或者如果它是从具有“以管理员身份运行”选项的普通用户帐户启动时,uiAccess设置为true调用才有效。loadURL()
  • 否则loadURL()不做任何事情,不抛出任何错误

其他一切似乎都正常工作(创建窗口、捕获事件等)

UPD:我添加了日志记录,发现调用后不久BrowserWindow's发出了两个事件:webContentloadURL

这表明渲染器进程已经崩溃 - 但为什么呢?设置ELECTRON_ENABLE_STACK_DUMPINGELECTRON_ENABLE_LOGGING环境变量true不提供更多信息。

任何想法可能是什么原因,如何解决?

0 投票
1 回答
601 浏览

c# - 绕过 UAC 以允许从非提升源拖放到我们提升的应用程序

有几个来源解释了防止将文件从资源管理器拖放到提升的应用程序的 UAC 事物,但它们都没有涵盖 WPF 示例。

问题是我的应用程序需要以管理员权限运行,但同时它与上述问题发生冲突,所以我陷入了僵局。

作为参考,有这个链接显示如何在 MFC 应用程序中解决这个问题(不是这种情况),使用ChangeWindowMessageFilterAPI。

是否有可能在 WPF 应用程序中实现相同的目标?

- 更新 -

我尝试过的事情:

  1. ChangeWindowMessageFilter在我的主窗口句柄创建后调用。该函数返回真。
  2. ChangeWindowMessageFilterEx在创建主窗口句柄后调用,将其作为参数传递。该函数返回 true 并且CHANGEFILTERSTRUCT.ExtStatusis MSGFLTINFO_NONE
  3. DragAcceptFiles在创建我的主窗口句柄之后调用DragQueryFileDragFinish但是看起来DragAcceptFiles调用不允许WM_DROPFILES在 WndProc 下拖动事件(),如下所示:

.

0 投票
2 回答
672 浏览

winapi - SendInput 在 UAC 提示符下失败

我们正在编写一个只运行的远程桌面应用程序,它使用 SendInput 进行键盘(和鼠标)交互。但是它不能与 UAC 提示交互。

我们的应用程序需要哪些权限/权限?

背景信息:该应用程序是由另一个复制 winlogon.exe 访问令牌的进程生成的。这可以在具有系统完整性级别的 SYSTEM 帐户下运行,附加到物理控制台会话并具有与 winlogon.exe 相同的 SE 权限(https://docs.microsoft.com/en-us/windows/desktop/secauthz/ privilege-constants),尽管并非所有这些都已启用。

0 投票
0 回答
26 浏览

windows - 剪贴板:无法将已注册的剪贴板格式枚举为本地系统

https://social.msdn.microsoft.com/Forums/en-US/5a85a9a6-88a3-4cba-8b19-31c979eea7fa/clipboard-unable-to-enum-registered-clipboard-formats-as-local-system

我遇到了与上面链接中描述的相同的问题。提问者给出以下答案:

EnumClipboardFormats已更新以防止调用者在内容被运行在不同完整性级别 (IL)频带中的进程复制到剪贴板时读取/枚举“不受信任的”剪贴板格式。用于将数据复制到剪贴板的进程在SECURITY_MANDATORY_MEDIUM_RID波段中运行,而进程调用在SECURITY_MANDATORY_SYSTEM_RID波段中运行,因此调用的进程只返回剪贴板格式。EnumClipboardFormatsEnumClipboardFormatsDataObject

我在不同的操作系统上对其进行了测试,发现测试演示可以在win7和win10中将注册的剪贴板格式枚举为Local System,但DataObject 在windows server2016中只是返回。我还将进程的完整性级别(IL)降低SECURITY_MANDATORY_HIGH_RID但返回DataObject与以前相同。

那么除了 IL 之外还有其他因素可能会影响枚举剪贴板格式的过程吗?如何使用在本地系统下运行的进程枚举所有已注册的剪贴板格式?