使用存储在标准USB笔式驱动器中的批处理文件(或VB脚本)自动登录Windows XP / Win-7


10

为什么我需要这个

我的Pen Drive充满了批处理记录和其他诊断工具。我在2个实验室中拥有75台独立(未联网)的PC,其中大部分都装有Win-XP-Pro SP-2。我经常需要使用管理员帐户登录每台PC进行配置或诊断。

因此,当我启动PC时,每次必须从登录屏幕中手动选择用户名并输入其密码。

现在,我想登录到Admin Acc。如果笔驱动器已连接到PC,则自动(以编程方式)。

我知道的:

我知道可以在用户登录XP / Win7之前运行脚本(批处理文件)。我写了一个批处理文件并保存到本地PC。我在组策略中对其进行了配置,以在系统启动时运行它(GPO位置:Computer Configuration \ Windows Settings \ Scripts(启动/关闭)\ Sartup)。此批处理文件成功检测到“笔驱动器是否已连接”。

我在Pen Drive上存储了另一个批处理文件(当前为空白)。

第一个批处理文件使用循环在从C到Z的所有驱动器中搜索第二个(login.bat)批处理文件,如果该文件存在,则假定存在笔式驱动器,然后进一步调用第二个(login.bat)批处理文件进行操作。

我不知道的是:

现在我不知道login.bat文件的代码是什么,或者我不知道'如何实用地登录。

还有哪些其他选择:

不必仅使用批处理文件。我还可以考虑“如果您有其他任何自动登录选项,例如使用VB Script或任何其他第三部分可执行文件”,

编辑:

根据这个问题,设置用户通过批处理脚本在Windows上自动登录,我可以创建一个脚本来修改注册表项并允许自动登录。即使这可行,您也必须重新启动PC才能应用更改。这是我要避免的事情。与仅亲自登录相比,运行脚本和重新启动需要更多时间。

我希望能够根据需要自动登录。这意味着,一旦我连接笔式驱动器,该脚本就应该能够以管理员帐户登录我,而无需重新启动PC。

我在网上阅读可以通过创建GINA dll文件来实现,但是我在该领域没有经验。有什么想法可以实现吗?



@ DA-您怎么能说是“设置用户自动登录...”的副本?您是否已阅读问题的完整说明?而且您是否知道“设置用户自动登录。这不是您指定的用户的重复。我不想每次都打开PC来设置用户自动登录。”这将启用用户无论是否连接了Pen Drive都将自动登录。我需要批处理文件或vbscript文件来启动登录“仅当我的Pen drive连接到PC时。请仔细阅读完整的问题。”
Ajaib Singh

@DA先生,我仔细阅读了指定的答案。本教程甚至连互联网都满载。首先,它不会检查Pen Drive的存在以有条件地允许自动登录。2nd”(第2个),突出显示了“设置应登录的次数”选项。这不适合我。让我解释一下原因。我只有两个可能的值可以分配给“设置它应该登录多少次”。第一是1,第二是“大于一”
Ajaib Singh

如果我将其设置为1:它将仅允许自动登录一次。在下次启动时,“我必须输入用户名和密码。如果我将其设置为大于1(说10),它将自动登录指定的次数。现在,直到指定的次数到期为止,默认情况下,每个用户都将登录到管理员帐户。我不想要的。我的要求是:只要连接了笔式驱动器,“允许无限次登录”,否则不允许自动登录。
Ajaib Singh

2
问题:(1)您是否仅对具有相同用户名/密码的所有计算机进行一次登录?(2)是否可以在所有计算机上安装软件解决方案(如果存在)?(3)您会为商业产品付款吗?
harrymc

Answers:


2

可以通过编程方式登录Windows,但不能使用简单的批处理文件登录。相反,您需要使用C ++(或者可能是C#,但不建议使用)构建DLL 。在Windows XP(及之前的版本)中,此功能称为GINA
(从Vista开始,您需要构建凭据提供程序。)

参考:以编程方式登录Windows XP


喜wp78de“我已经解决了我的问题,VB脚本,只需发送键登录屏幕上,和我的管理员帐户在获得loged感谢您的回答。
阿贾布·辛格

1

我不小心自己找到了解决方案。如前所述,我有2个脚本:第一个位于本地计算机中,第二个位于Pen Drive中。1st(.bat)已预先配置为在系统启动时运行(请参阅如何分配计算机启动脚本?),如果连接了笔式驱动器,它将调用2nd(.vbs)。

怎么运行的:

第一个文件的工作已在Question中进行了描述;第二脚本的工作非常简单,但是可以满足我的需求。该脚本仅以与我在登录键盘上键入的相同顺序在登录屏幕上发送击键。在这里,我想分享两个脚本的全部代码。希望这对像我这样的人有帮助,他们不想干扰内部操作系统文件(例如GINA)。

代码是:

第一个脚本(登录脚本)

名称: "Find PD.bat"

位置:

"%SYSTEMROOT%\System32\GroupPolicy\Machine\Scripts\Startup\Find PD.bat"

@ECHO OFF
SET vCount=1
set LogFl=%~d0%~p0%Find PD.log
echo Process Started...>"%LogFl%"

:RECHK
SET PD=
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
    IF EXIST "%%i:\OTHER\RESTORE\OTHER\FillCred.vbs" (
        SET PD=%%i
    )
)

:FOUND
echo:>>"%LogFl%"
IF /I DEFINED PD (
    echo %time% : Pen Drive Found with '%PD%' Drive Letter>>"%LogFl%"
    "%PD%:\OTHER\RESTORE\OTHER\FillCred.vbs"
) ELSE (
    IF %vCount% LSS 11 (
        set /a "vCount=vCount+1"
        echo %time% : Retry: %vCount% >>"%LogFl%"
        ping -n 2 -w 200  1.1.1.1>nul
        GOTO RECHK
    ) ELSE (
        echo %time% : Pen Drive Not Found. Exiting>>"%LogFl%"
        EXIT /b 1
    ) 
)
:EOF

第二脚本:

名称: "FillCred.vbs"

位置:

"<PenDriveRoot>\OTHER\RESTORE\OTHER\FillCred.vbs"

码:

set WshShell = CreateObject("WScript.Shell")
WScript.sleep 1000
WshShell.SendKeys "{DOWN}"
WScript.sleep 50
WshShell.SendKeys "ReplaceThisWithYourPassword"
WScript.sleep 50
WshShell.SendKeys "{ENTER}"

记得:

1)仅在Windows XP上测试过。

2)只有在Windows显示默认登录屏幕(也称为“欢迎屏幕”)的情况下,此方法才有效

3)您必须为您的按键序列修改第二个脚本。

4)如果您的系统需要在登录前按Ctrl + Alt + Delete,则此功能将无效。

5)这是非常基本的解决方案,但是您可以通过编辑第二脚本来使它更高级。只要您的系统允许登录屏幕上的击键,它就可以工作。

谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.