gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:50:46 25 4
gpt4 key购买 nike

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

到目前为止,我已经尝试了几种方法,例如在用户帐户上设置标志,表明它已被禁用。这会将其从登录屏幕中完全删除。据我所知,如果用户帐户已登录,则不会应用 ADS_Disable 标志。我也曾尝试寻找有关注销另一个帐户的资源,但我似乎只能找到有关注销正在运行注销命令的帐户的信息。如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);

[DllImport("Kernel32.dll", SetLastError = true)]
static extern int WTSGetActiveConsoleSessionId();

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# - 使用 C# 在本地注销 Windows 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com