- 主题:[求助]想用C#编写一个简易用户计时系统
虽然你描述很简单,但这个大概率入门水平搞不定。。。或者换个说法,你打算用多
长时间来做完你这个软件,一两年吗
比如 Ctrl-Alt-Delete 是没法简单屏蔽掉的,而任何锁屏不可能凌驾于 C-A-D 之上。
(加个键盘钩子可能可以,但是这就不是入门水平能解决的)
比如进程防杀,杀毒软件和病毒都在研究的东西,你搞出来的大概率防君子不防小人。
要精确实现你说的这个需求,有个东西叫 Winlogon and Credential Providers
(旧版 Windows 里叫 GINA),也就是用你自己的软件直接替代掉 Windows 的账户认
证。
开机自启动、微信扫码这些事,反而相对来说没那么复杂了。。。。
【 在 jungfrau (在路上) 的大作中提到: 】
: C#入门水平,我想模仿用户计时系统编写一个简单的客户端程序,使用流程如下:
: 1、在windows账户前(如果做不到就在某个已登录账户下),优先卡在用户(不是windows用户,是使用账户)登录界面,只有认证过才能正常显示桌面。登录界面不能激活Ctrl+Alt+Delete。
: 2、断网的状态下,借助微信扫码的形式向服务器发送认证信息,并返回认证码。在登录界面输入认证码解锁。
: 3、退出登录同理。
: 我想的几个关键技术点是:
: 1、找到一个锁屏函数
: 2、禁用Ctrl+Alt+Delete的函数
: 3、使用期间不能杀掉该进程
: 4、其它简单用到的:开机自启动、发送本机名给服务器
: 不知道这个思路对不对?求指教!或者有偿代写也行。
--
FROM 114.242.94.*
系统首次登陆前网络可以是连上的(事实上服务器从来没人登陆 console,不也样对
外提供服务么)。取决于你的网络类型,你要是 PPPoE 拨号那另当别论。
你主题帖的描述里面说的本来就是离线的(微信扫码 + 服务器返回 + 人工输入),
那这个流程也不依赖联网吧。
比如我设计一个流程,电脑生成一个随机密码,用电脑里预先存在的公钥加密,然后
通过二维码显示出来。微信扫码提交给服务器,服务器用私钥解密,明文给用户显示
出来,用户在电脑上输入,和本地的随机密码检验一致完成登录,不就行了。
win10 是可以通过微软账户登录,但是也是离线的(登录的时候确实不保证有网)。
【 在 jungfrau (在路上) 的大作中提到: 】
: 您好,Credential Providers确实是个好东西!
: 我想有时间用虚拟机试一下,顺便想和您讨教:系统开机首次登录前网络是没有初始化的?所以首次开机只能通过离线(扫码)的方式通过认证。这样的话平时只能以锁屏的方式待机,这样才能保持联网状态?
: 但是又好像印象中win10是可以通过微软账户登录系统的?(我没使用过,不确定)
: ...................
--
FROM 114.242.94.*
二维码可以简单认为是一串字符串,一般是 url 也可以不是。
微信扫码登录,那个界面(网页、app)首先找服务器申请一个 key,然后展示含有
key 的二维码,并且在后台一直向服务器查询这个 key 被扫码的状态。
手机微信扫码,然后在手机操作登录,操作完之后手机这边不会返回什么东西。服务器
端会用你登录的这个用户的信息来关联到那个 key。
最后那个界面查询到 key 已经被扫并且已经关联到一个合法用户,完成它自己的登录
流程。
在这个流程里你手机微信和电脑之间是没有直接交互的。
【 在 jungfrau (在路上) 的大作中提到: 】
: 您好,能指点一下第一点的变通做法吗?
: 第二点,我记得以前试过用C#读写二维码的demo。只要把信息字符串提供给函数就行?
: 我平时接触过这种工作模式的软件,直接用微信扫码就行。应该是微信扫出了一个跳转请求链接?(上行),然后取回一个认证码(下行)
: ...................
--
FROM 114.242.94.*