如何通过Batch-Vbscript混合脚本获取新生成的进程的Window标题?

问题描述

我正在尝试使组策略编辑过程尽可能自动化。

我有以下脚本来生成gpedit.msc进程,但是一旦打开它的窗口就会失去焦点:

FINDSTR /E "'VbsCode" %~f0 > %temp%\~temp.vbs
CSCRIPT //NOlogo %temp%\~temp.vbs
Sub GPEditOptions 'VbsCode
    On Error Resume Next 'VbsCode
    Set WshShell = WScript.CreateObject("WScript.shell") 'VbsCode
    WshShell.Visible = False 'VbsCode
    WshShell.Run "gpedit.msc",0 'VbsCode
    :: WshShell.AppActivate "Local Group Policy Editor" 'VbsCode
End Sub 'VbsCode
GPEditOptions 'VbsCode
:: WScript.Quit 0 'VbsCode

如何AppActivate由新产生的gpedit.msc进程打开的窗口?具体来说,如何知道已打开的窗口的名称/标题是什么? “本地组...编辑器”无效。

解决方法

我想我最终想出了解决该问题的方法。进程有不同类型。

在这种情况下,我首先需要选择 <Link to={ disableLink ? '#' : '/project/details/' + project.projectId } className={disableLink ? "disabled-link" : ''} onClick={disableLink ? preventDefault : ''} > <Card className={borderColor}> <CardContent> <Box> <Box display="flex" pb={1}> <Box mr={0.5} flexGrow={1}> <Tooltip title={project.projectName}> <Typography variant="h6" className="header-three" > {Name} </Typography> </Tooltip> </Box> <Box mr={0.5}> <Tooltip title={Test}> <Chip size="small" label=businessPractice /> </Tooltip> </Box> </CardContent> </Card> </Link> 窗口,因为它是产生实际“本地组策略编辑器”子进程的父进程。

因此,此代码通过事先发送大量键来完成选择第一个以字母“ W”开头的Windows组件的工作,是的,您确实需要管理员提升权限才能正确选择gpedit.msc窗口中的选项:>

Microsoft Management Console

希望这可以帮助面临类似问题的任何人。

,

无需发送一堆密钥并获得组策略编辑器窗口标题。

实际上,每个组策略设置都具有等效的注册表项。并且可以通过VBScript轻松地编辑注册表。要找到组策略设置的等效注册表项,请执行以下操作:

  • 从SysInternals下载名为Process Monitor的工具。
  • 运行它,然后单击“过滤器”>“过滤器”。
  • 现在创建两个过滤器,例如:"Process name" - "is" - "mmc.exe" - then "include""Operation" - "is" - "RegSetValue" - then "Include"
  • 现在编辑组策略设置,注册表项将出现在“进程”监视器中。

以及在VBScript中编辑注册表的功能:

Function RegSetValue(regkey,value)
  Dim WshShell
  Set WshShell = CreateObject("Wscript.Shell")
  WshShell.RegWrite(regkey,value)
End Function