我正在用 C# 为一套技术支持工具编写远程控制应用程序。一切工作正常,除了我无法使用 SendInput 到 Winlogon 桌面。我成功检测到从默认到 Winlogon 的更改,并且我能够切换到它并捕获屏幕截图。它只是不接受 SendInput 函数。我知道这是可能的,因为 TeamViewer 这样做了,而且他们的清单中没有 uiAccess=true 。他们似乎正在使用与我相同的流程。
简而言之,这就是我正在做的事情:安装服务。服务监听连接请求。服务使用 CreateProcessAsUser 和来自 winlogon.exe 的重复访问令牌在用户会话中启动新进程。查看器连接到新进程。
任何人都可以确定缺少什么来让新进程访问 SendInput 到 winlogon 吗?这是我用来从服务启动新进程的代码。接下来是我用来检测 Winlogon 桌面更改并切换到它的代码。
public static bool OpenProcessAsSystem(string applicationName, out PROCESS_INFORMATION procInfo)
{
try
{
uint winlogonPid = 0;
IntPtr hUserTokenDup = IntPtr.Zero, hPToken = IntPtr.Zero, hProcess = IntPtr.Zero;
procInfo = new PROCESS_INFORMATION();
// Obtain session ID for active session.
uint dwSessionId = Kernel32.WTSGetActiveConsoleSessionId();
// Check for RDP session. If active, use that session ID instead.
var …Run Code Online (Sandbox Code Playgroud) 我正在尝试让一个程序解锁用户的Windows7桌面。我认为这在某些.NET语言中是最简单的,但是只要满足即可。
我一直在阅读有关stackoverflow的文章,有人说这是不可能的。如果是这种情况,Windows笔记本电脑上如何使用面部识别程序或指纹读取器。虽然我不会使用指纹或面部识别,但会以自己的方式对用户进行身份验证。功能将是相同的,但是因为一旦用户通过我的支票,我将登录桌面。
如何使用Powershell从Windows事件日志中读取登录和注销事件,并从Active Directory检索每个用户的相应信息?
我使用了Microsoft的Credential Provider示例来组合默认Windows 7登录屏幕的包装器.
就新的CP而言,所有内容似乎都运行良好,但我的登录屏幕上出现了重复的图块,即默认的Windows图块和我的"包装"图块.
如何删除默认的Windows磁贴,因为这不包含我的更改?
我试图在我的应用程序中使用Windows 7登录屏幕(或切换用户屏幕)的打印屏幕.
事实上,我不知道如何做到这一点.谁能帮助我?
winlogon ×5
c# ×2
login ×2
windows ×2
.net ×1
desktop ×1
event-log ×1
powershell ×1
printscreen ×1
sendinput ×1
teamviewer ×1
visual-c++ ×1
windows-7 ×1
winforms ×1