问题标签 [winlogon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4413 浏览

c# - 在 Windows XP 中使用 C# 在登录屏幕上显示窗口

我正在尝试使用 C# 创建一个服务,该服务启动一个可以显示在 Windows XP 登录屏幕上的进程。

我发现了一些在 C++ 中执行此操作的代码。C++ 代码用于创建另一个进程的服务,其中 STARTUPINFO.lpDesktop 设置为“WinSta0\WinLogon”。然后将创建的进程显示到 Windows 登录屏幕。我似乎找不到使用 System.Diagnostic.Process 类在 C# 中指定新进程的“桌面”的方法。

有谁知道如何用 C# 做到这一点?

0 投票
1 回答
389 浏览

winapi - 用户可以直接在 Microsoft Vista 上与服务交互吗?

在 Microsoft 网站上(请参阅msdn.microsoft.com/en-us/library/ms683502(VS.85).aspx),它清楚地表明“服务无法直接与 Windows Vista 中的用户交互”。

所以我决定使用“psexec -s cmd.exe”来测试它。据我所知,“psexec”会创建一个服务以打开命令提示符。不用说它奏效了。然后我决定将“EnumWinSta GUI”与 psexec 结合使用来切换到 winlogon 桌面。令我惊讶的是,我什至可以在这个桌面上启动“cmd.exe”。这是否意味着从服务创建的新流程可以是交互式的?

还是因为 psexec 做了某种黑魔法?如果是这样,它是如何做到的?

我正在尝试将服务中的全屏窗口显示到 Vista 和 XP 中的 winlogon 桌面对象中。

0 投票
1 回答
3543 浏览

windows - 如何在 Windows 中监控失败的登录尝试?

是否有任何可靠的方法可以在 Windows XP 中即时监控失败的登录尝试?(好吧,Vista 也是如此)。我需要以编程方式监视失败的登录尝试,目前这是通过一个简单的GINA Stub通过从 MSGINA 继承登录对话框来完成的。

但是,如果链中还有其他 GINA,我目前的解决方案是不防水的。

所以我的问题是:我可以依赖任何(其他)API吗?还是我必须推出整个 GINA 替换 DLL?

0 投票
1 回答
799 浏览

installation - 在 GINA 上使用 Wix 卸载会导致登录失败

问题:卸载替换 GINA 后,如果我使用 WIX 3.0 安装程序,我会在登录后立即注销。

我有一个 Windows XP 的替换登录进程 (GINA)。它由放置在系统目录 C:\windows\system32\NewGina.dll 中的单个文件和一个注册表项 (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\GinaDLL=NewGina.dll) 组成,我手动操作没有问题安装它,运行它,手动卸载它并正常登录。

我还可以在VS2008中使用微软安装包创建安装程序,安装、登录、卸载、登录仍然可以正常工作。

我遇到的问题是,当我使用 Wix 安装程序时,我安装、登录、卸载和登录,登录后我立即注销。立即注销后,我能够连接远程注册表并转储注册表。我尝试在注册表之前和之后进行比较,并尝试了进程监视器,希望能发现 Wix 安装程序在做什么,但操作和更改(大约 35,000)有点难以分析。注册表行(上面列出的)消失了,windows 应该恢复到原来的 msgina.dll

由于项目的其余部分使用 Wix 安装程序,我希望使用它。

关于如何让它工作并避免自动注销的任何想法?

谢谢

APB

我的 Wix 脚本看起来像

0 投票
1 回答
1886 浏览

c# - 通过服务删除 Windows 登录屏幕

我正在尝试从从服务启动的可执行文件中删除 Windows 登录屏幕 (winlogon)。该服务将自动启动 windows 并等待来自另一台计算机的命令。当它接收到命令时,它将启动一个 exe,该 exe 将在特定用户名下启动 cmd.exe。

该服务已经存在。我有编写这个可执行文件的工作。目前,我已经编写了可执行文件 (CmdLogin),它通过调用 LogonUserW、ImpersonateUser 和 CreateProcessWithLogonW 在不同的用户下启动 cmd.exe。我将 lpDesktop 指定为“WinSta0\Default”。唯一的问题是该服务必须在管理员帐户下运行(但这是一个不同的问题)。

当从命令提示符调用时(即使在 Windows 7 上),它工作得非常好。当用户登录并查看他的桌面时从服务调用时,这也有效(就像我在同一台机器上调试时所做的那样)。但是,就像我上面所说的,我真正的要求是即使在显示 Windows 登录屏幕时也能正常工作。目前,exe 给出了正确的退出代码,但没有出现该窗口。但是,当用户登录时,他会在桌面上看到 cmd 窗口。

我发现的一种解决方案是对 lpDesktop 使用“WinSta0\WinLogon”而不是 Default。我还没有尝试这个。但是,这看起来会在登录屏幕上显示 cmd 窗口。我真正需要的是实际模拟用户登录到 winlogon 并显示他的实际桌面(和 cmd 窗口)。

我环顾四周,发现了 GINA 和 Winlogon 通知包。他们似乎有点过头了,我不确定这是否能解决这里的目的。此外,这些在 Windows Vista 中已被弃用,这让我认为有更好、更简洁的方法来解决这个问题。

关于我应该使用什么来实现这一目标的任何建议?作为记录,可执行文件在 C# 中,使用 P/Invoke 进行 API 调用。我也愿意使用可以从此 C# 应用程序调用的 C dll。

谢谢你,
侯赛因

0 投票
2 回答
607 浏览

winapi - Windows LogonUser 功能适用于旧密码?

我正在使用 LogonUser 函数 ( http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx ) 对用户进行身份验证。但是我发现如果用户更改了他们的密码(即从 Password1 到 Password2),那么两个密码都可以使用。但是我希望它只能使用当前密码。我需要设置什么才能让它像那样工作吗?

我正在使用以下代码片段:

nt_id 格式为 USER@USERDOMAIN.SOMETHING.COM

我有 3 代替LOGON32_PROVIDER_WINNT50,因为我会得到一个编译错误,说未声明的标识符LOGON32_PROVIDER_WINNT50(这可能是一个症状吗?)但我知道它被定义为 3。

谢谢,-皮特

0 投票
4 回答
2473 浏览

windows - 如何在已修改为不运行资源管理器的 Windows 系统上启动时运行应用程序

概括

如何让我的 GUI 应用程序在 Windows 启动时在不会启动 explorer.exe 的修改过的 Windows 机器上运行。

  • 在Programs -> Startup 文件夹中放置链接不会被执行。
  • 我的应用程序是图形的,所以我不能只修改应用程序以作为服务运行。

背景

我有一个应用程序需要在专用 PC 上运行,用于生成Digital Signage. 它是一种生成公告和各种幻灯片内容的软件,您可以在大型组织的等离子/液晶显示屏上看到这些内容。

我与此类内容管理软件的几个不同供应商有过合作经验,他们基本上都构建了一个 Windows 应用程序,然后从 Windows 中删除一些东西以防止出现任何类型的弹出窗口等。我正在处理的供应商之一现在,windows 已被修改为explorer.exe无法启动。

我们程序的启动时运行功能使用启动文件夹中的链接。我发现,因为explorer.exe我的应用程序也没有运行,所以我的应用程序也没有运行。

当计算机启动时,它会自动启动到数字标牌应用程序的运行模式,该应用程序开始显示可编程内容。你可以按CTRL- ALT-DELETE并杀死他们的程序,然后explorer.exetaskmanager. 大约一秒钟后……我看到我的应用程序启动了。

所以,我的问题是 - 如何让我的应用程序加载到无法启动的 Windows 机器上explorer.exe。任何人都知道是否说即使在没有资源管理器的情况下使用 Run 文件夹中的注册表项也可以工作?有没有其他方法可以让程序在启动时运行?


编辑:接受的答案实施说明

我在接受的答案中实施了该方法。这是我发现在实现它时有用的链接。我从未尝试过注册表项方法。如果有人确认它将在不explorer.exe加载的情况下执行,请发表评论。

0 投票
4 回答
2811 浏览

c# - 从 Windows 登录屏幕挂钩热键

我建立了一个挂钩键盘的程序,当一些热键按下它打开门(连接到计算机的 COM1 串行端口)。

这工作正常,直到我锁定计算机(winkey+L)。我希望能够在登录屏幕上使用相同的热键打开门。

我使用 Windows XP 和 C#。

我怎么做?

谢谢。

0 投票
2 回答
1201 浏览

c++ - Vista/Windows 7 的凭据管理器

我在 VC++ 中实现了凭据管理器,它在登录过程中捕获凭据。它在 XP/Vista/Windows 7 32 位环境中运行良好。但不适用于 64 位。任何的想法 ?提前感谢您的帮助

0 投票
2 回答
3744 浏览

c# - 创建交互式登录会话

我正在尝试创建一个类似于 Microsoft 废弃的Super Fast User Switcher下载)的实用程序,它允许快速用户切换而无需通过欢迎屏幕。

我有一个使用未记录的WinStationConnectWAPI(以及WTSEnumerateSessions)的工作实现,但它只能切换到已经登录的用户。

如何创建登录会话以便它可以切换到未登录的用户?
我只需要支持 XP,虽然在 Vista / 7 上工作会很好。(我当前的代码已经这样做了)

我知道这是可能的,因为 Super Fast User Switcher 做到了。(虽然它需要一个 Windows 服务来做到这一点)

我正在编写 C#,但我可以将任何答案翻译成 C#。