程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MS Edge 铬使用起始工艺大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决MS Edge 铬使用起始工艺?

开发过程中遇到MS Edge 铬使用起始工艺的问题如何解决?下面主要结合日常开发的经验,给出你关于MS Edge 铬使用起始工艺的解决方法建议,希望对你解决MS Edge 铬使用起始工艺有所启发或帮助;

我正在通过 kernal32.CreateProcess 启动 msEdge,该进程会启动,但是当我尝试与初始进程交互时,它已经退出并且一个新进程正在运行。我已经编写了代码来处理这个问题,但是我有一些代码受到这种新行为的影响并且无法与进程交互,因为它看起来像是退出了......

此行为首次出现在 msEdge 更新 89.0.774.57 中,但一位同事在降级到 86.0.622.56 后发现它发生了

寻求有关如何阻止 msEdge 以这种方式启动的帮助,我认为它有一些我缺少的配置选项...

示例代码(适用于 VB 的应用程序!):

Sub Main()
       Dim processInfo As PROCESS_informatION
       Dim creationFlags As Integer = CreationFlagsLocal.norMAL_PRIORITY_CLASS Or CreationFlagsLocal.DETACHED_PROCESS

       Dim startupInfo As STARTUPINFO = New STARTUPINFO
       startupInfo.cb = Marshal.SizeOf(startupInfo)

       Dim path = "C:\\Program files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
       CreateProcess(nothing,path,nothing,false,creationFlags,IntPtr.Zero,startupInfo,processInfo)
       Console.Writeline("The processID from CreateProcess was: " & processInfo.DWProcessID)
       Thread.Sleep(2000)
       Console.Writeline("GetRunningEdgeProcessID() returns " & GetRunningEdgeProcessID())
       Dim originalPIDExists = Process.GetProcesses().Any(Function(X) x.ID = processInfo.DWProcessID)
       Console.Writeline($"PID {processInfo.DWProcessID} still exists? {originalPIDExists}")
   End Sub

初始进程退出后获取运行进程的代码:

 Function GetRunningEdgeProcessID() As Integer
        Dim edgeProcesses = Process.GetProcessesByname("msedge")
        Dim mainProcess = edgeProcesses.FirstOrDefault(Function(X) Not String.IsNullOrEmpty(x.MainWindowtitlE))
        If mainProcess Isnot nothing Then Return mainProcess.ID
        Return -1
    End Function

CreateProcess 的导入:

 <Dllimport("kernel32.dll",CharSet:=CharSet.Unicode,SetLastError:=TruE)>
    Function CreateProcess(ByVal lpApplicationname As String,ByVal lpCommandline As String,ByRef lpProcessAttributes As Security_ATTRIBUTES,ByRef lpThreadAttributes As Security_ATTRIBUTES,ByVal binheritHandles As Boolean,ByVal DWCreationFlags As Integer,ByVal lpEnvironment As IntPtr,ByVal lpCurrentDirectory As String,<[In]()> ByRef lpStartupInfo As STARTUPINFO,<[Out]()> ByRef lpProcessinformation As PROCESS_informatION) As Boolean


    End Function

解决方法

事实证明,启动 msEdge 的进程已提升,而 edge 不想以提升的方式运行,因此它会在正常用户上下文中重新启动。有一个标志允许边缘在解决原始问题的提升模式下运行。

此外,该问题也可能是由于使用了 MS 最近远程禁用的 Start-Up Boost 功能造成的,因为它导致了这样的问题 edge://flags#edge-de-elevate-on-launch

进一步阅读: https://winaero.com/microsoft-edge-now-de-elevates-itself-automatically/

大佬总结

以上是大佬教程为你收集整理的MS Edge 铬使用起始工艺全部内容,希望文章能够帮你解决MS Edge 铬使用起始工艺所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:MS