小编Dog*_*Dog的帖子

如何以编程方式与winlogon交互?

我有一个Windows服务,我想使用帐户用户名和密码以编程方式解锁工作站.

本文https://technet.microsoft.com/en-us/library/dn751047(v=ws.11).aspx解释了Windows上的登录验证工作流程,如下图所示: 认证工作流程

如上所述,在步骤5,用户将凭证输入到登录UI中.我想要实现的是让Windows服务输入凭据并让winlogon执行登录.

没有winlogon API来实现这一目标.如在其他问题中所见,使用winapi LogonUser函数成功执行身份验证并返回令牌,但它不会切换到应用程序桌面,并且Logon UI仍保留在屏幕上.

大多数文章和SO答案暗示了凭证提供者,但所有凭据提供者样本都需要用户与Logon UI进行交互.

更新:我看到一些用户还没有完全理解这个问题,并提出了对我的案例无用的解决方法.我正在尝试实现的工作流程如下:

  1. Windows服务在Windows启动(完成)时启动.
  2. 相同的Windows服务具有Web服务,并通过API(完成)接受HTTP请求.
  3. 用户通过API从另一个设备(完成)向服务提供凭据.
  4. 提供的凭据用于登录工作站.
    4.1提供的凭证用于在锁定时解锁工作站(WinKey + L).
  5. (可选)该服务通过API公开Windows帐户.
  6. (可选)用户可以向服务指定要用于登录的帐户.

目前,我有兴趣制定第4步和第4.1步.

c# winapi winlogon credential-providers

28
推荐指数
1
解决办法
2321
查看次数

递减运算符如何在while语句中工作?

我在C中有以下代码源:

#include<stdio.h>

void main()
{
    int i=0, x=3;
    while((x---1))
    {
        i++;
    }
    printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)

这个while语句是如何工作的,为什么它打印2而不是1?

c while-loop decrement

6
推荐指数
2
解决办法
1512
查看次数

标签 统计

c ×1

c# ×1

credential-providers ×1

decrement ×1

while-loop ×1

winapi ×1

winlogon ×1