问题标签 [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.
c# - 在 Windows XP 中使用 C# 在登录屏幕上显示窗口
我正在尝试使用 C# 创建一个服务,该服务启动一个可以显示在 Windows XP 登录屏幕上的进程。
我发现了一些在 C++ 中执行此操作的代码。C++ 代码用于创建另一个进程的服务,其中 STARTUPINFO.lpDesktop 设置为“WinSta0\WinLogon”。然后将创建的进程显示到 Windows 登录屏幕。我似乎找不到使用 System.Diagnostic.Process 类在 C# 中指定新进程的“桌面”的方法。
有谁知道如何用 C# 做到这一点?
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 桌面对象中。
windows - 如何在 Windows 中监控失败的登录尝试?
是否有任何可靠的方法可以在 Windows XP 中即时监控失败的登录尝试?(好吧,Vista 也是如此)。我需要以编程方式监视失败的登录尝试,目前这是通过一个简单的GINA Stub通过从 MSGINA 继承登录对话框来完成的。
但是,如果链中还有其他 GINA,我目前的解决方案是不防水的。
所以我的问题是:我可以依赖任何(其他)API吗?还是我必须推出整个 GINA 替换 DLL?
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 脚本看起来像
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。
谢谢你,
侯赛因
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。
谢谢,-皮特
windows - 如何在已修改为不运行资源管理器的 Windows 系统上启动时运行应用程序
概括
如何让我的 GUI 应用程序在 Windows 启动时在不会启动 explorer.exe 的修改过的 Windows 机器上运行。
- 在Programs -> Startup 文件夹中放置链接不会被执行。
- 我的应用程序是图形的,所以我不能只修改应用程序以作为服务运行。
背景
我有一个应用程序需要在专用 PC 上运行,用于生成Digital Signage
. 它是一种生成公告和各种幻灯片内容的软件,您可以在大型组织的等离子/液晶显示屏上看到这些内容。
我与此类内容管理软件的几个不同供应商有过合作经验,他们基本上都构建了一个 Windows 应用程序,然后从 Windows 中删除一些东西以防止出现任何类型的弹出窗口等。我正在处理的供应商之一现在,windows 已被修改为explorer.exe
无法启动。
我们程序的启动时运行功能使用启动文件夹中的链接。我发现,因为explorer.exe
我的应用程序也没有运行,所以我的应用程序也没有运行。
当计算机启动时,它会自动启动到数字标牌应用程序的运行模式,该应用程序开始显示可编程内容。你可以按CTRL- ALT-DELETE并杀死他们的程序,然后explorer.exe
从taskmanager
. 大约一秒钟后……我看到我的应用程序启动了。
所以,我的问题是 - 如何让我的应用程序加载到无法启动的 Windows 机器上explorer.exe
。任何人都知道是否说即使在没有资源管理器的情况下使用 Run 文件夹中的注册表项也可以工作?有没有其他方法可以让程序在启动时运行?
编辑:接受的答案实施说明
我在接受的答案中实施了该方法。这是我发现在实现它时有用的链接。我从未尝试过注册表项方法。如果有人确认它将在不explorer.exe
加载的情况下执行,请发表评论。
c# - 从 Windows 登录屏幕挂钩热键
我建立了一个挂钩键盘的程序,当一些热键按下它打开门(连接到计算机的 COM1 串行端口)。
这工作正常,直到我锁定计算机(winkey+L)。我希望能够在登录屏幕上使用相同的热键打开门。
我使用 Windows XP 和 C#。
我怎么做?
谢谢。
c++ - Vista/Windows 7 的凭据管理器
我在 VC++ 中实现了凭据管理器,它在登录过程中捕获凭据。它在 XP/Vista/Windows 7 32 位环境中运行良好。但不适用于 64 位。任何的想法 ?提前感谢您的帮助
c# - 创建交互式登录会话
我正在尝试创建一个类似于 Microsoft 废弃的Super Fast User Switcher(下载)的实用程序,它允许快速用户切换而无需通过欢迎屏幕。
我有一个使用未记录的WinStationConnectW
API(以及WTSEnumerateSessions
)的工作实现,但它只能切换到已经登录的用户。
如何创建登录会话以便它可以切换到未登录的用户?
我只需要支持 XP,虽然在 Vista / 7 上工作会很好。(我当前的代码已经这样做了)
我知道这是可能的,因为 Super Fast User Switcher 做到了。(虽然它需要一个 Windows 服务来做到这一点)
我正在编写 C#,但我可以将任何答案翻译成 C#。