系统相关
首页 > 系统相关> > 使用c#在本地注销Windows用户

使用c#在本地注销Windows用户

作者:互联网

我目前正在研究一些家长控制软件.该软件应该注销用户,然后锁定帐户,以便他们无法重新登录,除非父/管理员已指定他们可以.

到目前为止,我已经尝试了几种方法,例如在用户帐户上设置标记,表示它已被禁用.这会将其从登录屏幕中完全删除.根据我的发现,如果用户帐户已登录,则不会应用ADS_Disable标志.我也尝试寻找登出其他帐户的资源,但我似乎只能找到有关注销正在运行logout命令的帐户的信息.如Pinvoke,或直接拨打LOGOUT.EXE程序.

我在LSAUser找到了一个资源,发现那里可能有东西.我正在为学校做这个项目,我需要一点指导.由于关于这样做的信息量非常稀少,有没有更好的方法来做我想做的事情?或者我有理由不这样做吗?任何替代品?

解决方法:

使用WTSDisconnectSession()Windows API.见第here条.

using System;
using System.Runtime.InteropServices;
using System.ComponentModel;

class Program
{
  [DllImport("wtsapi32.dll", SetLastError = true)]
  static extern bool WTSDisconnectSession(IntPtr hServer, int sessionId, bool bWait);

  const int WTS_CURRENT_SESSION = -1;
  static readonly IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;

  static void Main(string[] args)
  {
    if (!WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE,
         WTS_CURRENT_SESSION, false))
      throw new Win32Exception();
  }
}

即使没有远程桌面,它也会断开当前用户的连接并转到登录屏幕.这些流程仍将在后台运行.再次手动登录后,正在运行的程序将显示为断开连接之前的状态.

标签:c,net,windows,windows-xp
来源: https://codeday.me/bug/20190718/1493930.html