枚举另一个会话上用户桌面的 Windows

2024-02-07

我有一个简单的问题让我发疯。

我有一个用 C# 编写的 Windows 服务,它应该在 XP、Vista 和 7 上运行,并且能够枚举当前用户桌面的窗口(如果有)以进行监控。

So far :

我用过EnumDesktopWindows通过IntPtr.Zero as the hdesktop参数,因为我没有用户桌面的句柄,这只会导致枚举分配给服务的特殊桌面中存在的少数窗口(Session0\Winsta0)

I tried EnumWindows,结果与上面相同!

我尝试使用获取已知进程的桌面GetThreadDesktopAPI,传递了 explorer.exe 线程之一的 id,但它返回 0,所以我无法获取它的桌面或任何其他桌面。

我尝试使用输入桌面OpenInputDesktop这显然返回 session0 内的桌面而不是用户的桌面。

我能做些什么?!

如果您好奇,我正在编写一个信息亭应用程序,它需要监视所有窗口并防止危险的窗口,例如任务管理器、Internet 选项、Cmd 以及一般用户不应打开的任何内容。

欢迎任何建议。 :)


无一例外,您不能枚举另一个会话中的窗口。另一方面,如果您具有“充当操作系统的一部分”(SeTcbPrivilege) 特权。

See 从服务在用户会话中启动进程 https://stackoverflow.com/questions/3128017/possible-to-launch-a-process-in-a-users-session-from-a-service如何做到这一点。

您最终可能会得到两个进程,一个作为 NT 服务运行的控制器,一个在用户会话中运行的代理。这两个进程可以通过命名管道进行通信,如果被用户终止,控制器将重新启动代理。

但是,您还应该使用组策略或其他配置来锁定客户端,以防止其他窗口打开。具体来说,软件限制策略 http://technet.microsoft.com/en-us/library/cc786941%28v=ws.10%29.aspx将允许您阻止非白名单可执行文件运行。

如果您使用的是Windows 8.1,还可以使用新推出的信息亭模式 http://blogs.msdn.com/b/hyperyash/archive/2013/10/25/enable-kiosk-mode-in-windows-8-1.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举另一个会话上用户桌面的 Windows 的相关文章

  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • SetCurrentDirectoryW 中的错误 206

    在我之后之前不清楚的问题 https stackoverflow com questions 44389617 long path name in setcurrentdirectoryw 我以某种方式能够创建一个具有长路径名的目录 但是
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • Windows 目录永远不会包含临时文件的非 ASCII 字符?

    在 Windows 上使用 MinGW 7 3 0 由于 Windows 限制 Hunspell 无法从包含非 ASCII 字符的位置加载字典文件 我已经尝试了所有方法 1 现在我将文件复制到没有 ASCII 字符的路径 然后再将其交给 H
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 警告“导入的库具有相同的名称,但它们不具有相同的名称”

    我在类中有以下导入语句 import package dart web toolkit ui dart import util flex table builder dart as ftBldr import factors list vi
  • 在 C++ 中创建 setter 函数的最佳方法

    我想编写一个通过移动或复制接收参数的模板函数 我使用的最有效的方法是 void setA A a m a std move a 在这里 当我们使用的是 A a setA a lt lt one copy ctor one move ctor
  • 包含 boost/Optional.hpp 时出现 C2143 语法错误

    我遇到了一个我无法理解的编译时错误 我尝试使用boost optional在我的代码中 一旦我包含boost optional hpp我无法再构建我的项目了 如果我注释掉这个 include 语句 它就会起作用 我什至没有任何实际用途boo
  • 如何在 bash 中不使用 printf 将字符转换为 ASCII

    ascii printf d 1 我目前正在使用此函数将字符转换为 ASCII 但是我只想将函数的结果存储为变量而不打印 ascii 我该怎么办呢 请记住 我总共只使用了几个小时的 bash 如果这是一个愚蠢的问题 我很抱歉 在 bash
  • 如何解决此 RCurl 错误:“SSL 证书问题:证书已过期”?

    我只是想获得下面一个简单的 URL 响应 但出现以下错误 该网站是有效的 我过去已经可以从该网站提取数千次信息 jsonString lt getURL full url Error in function type msg asError
  • 如何限制对ravendb管理面板的访问?

    当默认情况下运行 Raven Server exe 时 管理面板在 IP PORT 地址处可见 如何限制仅特定用户访问此面板 Steve 我们将 RavenDB 作为 Windows 服务运行 并使用 Windows 身份验证来控制访问 如
  • 将画布保存到图像文件会保存空白黑色图像

    首先 我对 UWP 和 XAML 还很陌生 我在我的 uwp 上编写了一个简单的代码 其中有一个画布 命名为 ImageHolder 里面有一个图像和文本块 我的主要问题是 每当我尝试使用 RenderTargetBitmap 将画布保存到
  • 如何在git的post-receive钩子中处理分支上的文件

    我有一个远程服务器 我在上面创建了一个裸 git 存储库 我想创建一个钩子 以便给定的脚本在任何给定分支上收到的最新代码上运行 我知道post receive可以使用钩子来实现它 但是我想做以下事情 找到收到代码的分支 在临时位置检出代码并
  • Python:交织两个列表[重复]

    这个问题在这里已经有答案了 执行以下操作的 pythonic 方法是什么 我有两个清单a and b相同长度的n 我想形成一个列表 c a 0 b 0 a 1 b 1 a n 1 b n 1 c item for pair in zip a
  • jQuery / JavaScript 中的自定义滚动条数学

    我目前正在开发一个项目 该项目使用自定义滚动插件 由我编写 来允许元素在触摸设备以及桌面浏览器中滚动 一切都工作正常 包括 iOS 的速度和减速度 然而 剩下的唯一问题是当用户滚动时计算滚动条的顶部 或左侧 位置 我用以下公式计算了滚动条的
  • 在我的 Express.js Jest 测试中找不到内存泄漏

    我现在花了一些时间尝试在 Jest 测试中查找内存泄漏 尽管我已经成功解决了一些问题 但仍然有相当多的内存在测试套件之间泄漏 具体来说 当我npm test 所有测试套件 我得到以下输出 PASS src suite1 test ts 71
  • iPhone 消息应用程序中的上滑菜单是如何实现的?

    在我的 iPhone iOS 8 0 2 上的消息应用程序中 当您撰写消息并单击相机图标插入图像时 底部会出现一个 向上滑动 菜单 它包含一些按钮 以及我可以插入到消息中的最近拍摄的照片 这个菜单叫什么名字 已经可以通过本地课程获得了吗 图
  • 无法搜索联系人

    所以我制作了一个静态联系人列表 并尝试添加搜索栏 但是我无法使用搜索栏搜索联系人 当我单击搜索栏时 它会打开但随后关闭 键盘会弹出一会儿 然后就会关闭 这个想法是使搜索具有预测性 因此当输入名称时 它将根据数据库中的名称列出已关闭的名称 有
  • 删除 JSON 元素

    我想从 JSON 中删除 JSON 元素或一整行 我有以下 JSON 字符串 result FirstName Test1 LastName User FirstName user LastName user FirstName Ropbe
  • Haskell:映射函数应用

    我在 Haskell 中进行的部分计算会产生映射的函数列表Float to Float 我想对所有这些函数应用一个参数 如下所示 x Float functions Float gt Float map f gt f x functions
  • 如何检查空结构?

    我定义了一个结构体 type Session struct playerId string beehive string timestamp time Time 有时我给它分配一个空会话 因为 nil 是不可能的 session Sessi
  • matlab 脚本中是否使用了某些 matlab 例程?

    我正在运行一个大的 m 文件 该文件不是我自己编写的 并且取决于某些子函数 我想知道所有嵌套函数中的任何位置是否使用了特定函数 在我的例子中是函数 eig m 用于计算特征值 有没有快速的方法来做到这一点 亲切的问候 科恩 您可以使用半文档
  • 如何编写 GraphQL 查询以从 github 检索所有工作流程/运行

    如何编写 GraphQL 查询以从 github 检索所有工作流程 运行 我尝试下面的查询来获取节点 id organization login abc repositories first 100 nodes id name 和下面的查询
  • Microsoft Teams:获取用户的时区?

    我正在为 MS Teams 开发一个机器人 我希望了解用户的时区 以便在适当的时间 例如 不是在半夜 传递消息 我没有在机器人框架 REST API 中找到合适的东西 虽然我们收到的消息包含 clientInfo country 属性 这是
  • 枚举另一个会话上用户桌面的 Windows

    我有一个简单的问题让我发疯 我有一个用 C 编写的 Windows 服务 它应该在 XP Vista 和 7 上运行 并且能够枚举当前用户桌面的窗口 如果有 以进行监控 So far 我用过EnumDesktopWindows通过IntPt