从 Windows 服务以编程方式登录用户

问题描述 投票:0回答:0

为什么?

我的电脑连接到我家的两个不同区域。我的办公室(办公桌)和客厅(电视)。从电视上使用我的电脑时,我想使用电视帐户。当我在办公桌上使用我的电脑时,我想使用我的个人账户。我已经设置了 KVM/Arduinos 以通过物理按钮完成显示器/USB 的切换。现在我需要做到这一点,以便我仅在从该区域启动时自动登录到电视帐户(我已经有一个运行在 Arduino 上的 HTTP 服务器告诉我这一点,我只需要将它连接到窗口服务)。 我不想在办公桌上启动电脑时自动登录到电视帐户,所以我无法使用内置的Windows自动登录功能。

我不想设置两台 PC,因为那样会非常昂贵,因为我需要在两个房间都配备功能强大的 PC。我也不想使用 VM,因为我不想管理两个 Windows 安装,并且想在两个帐户之间共享文件/程序。我需要自动登录电视帐户,所以我不需要使用 kb/m,所以 Steam 大图立即启动。

此程序仅供我在家中使用,不适用于其他用户/企业。所以我真的不在乎这个解决方案有多么不安全/不安全,只要它有效。

问题

如何编写在启动时运行并根据条件使用特定帐户登录用户的应用程序(C#、C++ 等)?在这种情况下,条件是向 HTTP 服务器发出请求,它会返回用户所在的区域(HTTP 服务器已经完成)。我需要实际登录并打开桌面/用户界面,而不仅仅是模拟一个帐户。

我试过的

  • Windows 内置自动登录。技术上可以通过以编程方式更改相关的注册表项并重新启动来工作,但我不想每次在电视上启动时都等待 PC 启动两次。 (https://www.codeproject.com/Articles/23630/Windows-XP-Automatic-Login-Using-C-C-Sharp
  • LogonUser
    ,据我所知,只允许您模拟用户,而不是实际登录并将他们带到他们的桌面。
  • Aster Multiseat 非常接近于完美解决这个问题,但不能在一个工作区中使用多个显示器,同时共享一个 GPU。 (办公桌上有 3 个显示器,1 台电视)。这是我的第一次尝试,因为它不支持这个我已经进入了这个 KVM/Arduino 兔子洞。
c# c++ windows winapi windows-services
© www.soinside.com 2019 - 2024. All rights reserved.