想象一下,您正在用高级语言编写一个程序,其中不允许您执行自定义系统调用(win32 API),因为代码是交叉编译的或该语言不支持该程序。
当您的进程在 Windows 上运行时,有没有办法确定您是否在 powershell 中运行而不是在 cmd.exe 中运行?或者反之亦然?
我正在尝试从程序中打印“我正在 powershell 中运行”和“我正在 cmd.exe 中运行”。
在本例中,我正在用 Golang 编写程序,但这并不重要,因为我不想遍历进程树。
最佳答案
Eryksun 可能对它的有用性有一定的看法,但是有一个 post about getting the parent process 。
将以下文本放入 ps1 脚本中:
$parentpid=(gwmi win32_process -Filter "processid='$pid'").parentprocessid
Write-Host ("I am running in {0}" -f (Get-Process -id $parentpid).Name)
从 CMD 调用 PowerShell 运行它:
I am running in cmd
从 PowerShell 和 ISE 运行它:
I am running in explorer
因此,虽然资源管理器不是很有用,但它不是 CMD,我认为这才是您真正想知道的。
关于windows - 查明进程是否正在 cmd.exe 或 PowerShell 窗口中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323938/