Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows services 如何从Windows服务启动非后台进程?_Windows Services_Background Process - Fatal编程技术网

Windows services 如何从Windows服务启动非后台进程?

Windows services 如何从Windows服务启动非后台进程?,windows-services,background-process,Windows Services,Background Process,我有一个用C#编写的Windows服务,它使用puppetersharp启动了一个googlechrome浏览器实例。请参阅下面的启动代码: string[] chromeArgs = { "--remote-debugging-port=9222" }; Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions() { ExecutablePath = "C:\\Program Files (x86)\\Google

我有一个用C#编写的Windows服务,它使用puppetersharp启动了一个googlechrome浏览器实例。请参阅下面的启动代码:

string[] chromeArgs = { "--remote-debugging-port=9222" };
Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions()
{
    ExecutablePath = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
    DefaultViewport = null,
    Args = chromeArgs,
    Headless = false // <-- this is important!
});
string[]chromeArgs={”--远程调试端口=9222“};
Browser Browser=wait puppeter.LaunchAsync(新的LaunchOptions()
{
ExecutablePath=“C:\\ProgramFiles(x86)\\Google\\Chrome\\Application\\Chrome.exe”,
DefaultViewport=null,
Args=色耳,
无头=假//
我怀疑Chrome浏览器不可见,因为它是从后台进程的Windows服务启动的,所以Chrome会自动作为后台进程启动。是否可以将Chrome作为非后台进程启动,以便我可以看到它?如果可以,如何启动

。除其他原因外,这可以防止被称为的安全漏洞。因此,它不仅位于不同的桌面上;它位于不同的桌面上,位于不同的Windows工作站上,位于不同的用户会话中

虽然您可以输入允许显示来自Win32服务的UI的代码,但不应使用该黑客。它需要降低整个系统的安全性,尤其是降低该服务的安全性,并且可能会停止使用任何未来的Windows更新

。有两种选择:

<> LI>你真的需要Win32服务吗?也许它应该是一个在登录时自动运行的普通应用程序。通常,Win32服务被使用,因为它们可以在没有登录的情况下运行,但是在这种情况下,我必须问如果没有用户登录,你会在哪里显示UI?所以,首先,考虑你的应用程序是否真的是Win32 SE。服务与否
  • 如果确实需要Win32服务,并且需要显示UI,那么正确的体系结构是将现有应用程序拆分为Win32服务和登录时运行的单独可执行文件。当Win32服务想要显示UI时,它使用某种形式的进程间通信通知自动运行应用程序显示实际UI 注意,使用选项(2),您还需要决定如何处理有多个登录用户的情况(例如,远程桌面会话),并确定要在哪个会话上显示UI

    我怀疑Chrome浏览器不可见,因为它是从后台进程的Windows服务启动的,所以Chrome会自动作为后台进程启动。是否可以将Chrome作为非后台进程启动,以便我可以看到它?如果可以,如何启动

    。除其他原因外,这可以防止被称为的安全漏洞。因此,它不仅位于不同的桌面上;它位于不同的桌面上,位于不同的Windows工作站上,位于不同的用户会话中

    虽然您可以输入允许显示来自Win32服务的UI的代码,但不应使用该黑客。它需要降低整个系统的安全性,尤其是降低该服务的安全性,并且可能会停止使用任何未来的Windows更新

    。有两种选择:

    <> LI>你真的需要Win32服务吗?也许它应该是一个在登录时自动运行的普通应用程序。通常,Win32服务被使用,因为它们可以在没有登录的情况下运行,但是在这种情况下,我必须问如果没有用户登录,你会在哪里显示UI?所以,首先,考虑你的应用程序是否真的是Win32 SE。服务与否
  • 如果确实需要Win32服务,并且需要显示UI,那么正确的体系结构是将现有应用程序拆分为Win32服务和登录时运行的单独可执行文件。当Win32服务想要显示UI时,它使用某种形式的进程间通信通知自动运行应用程序显示实际UI
    注意,使用选项(2),您还需要决定如何处理多个登录用户的情况(例如,远程桌面会话),并确定要在哪个会话上显示UI。

    屏幕上显示的是用户桌面。默认情况下,服务无法访问用户桌面,因为它不是用户。(它是在后台运行的服务)。为什么后台服务需要启动浏览器(GUI应用程序)?如果你需要这样做,你的应用首先不应该是服务。你在屏幕上看到的是用户桌面。默认情况下,服务无法访问用户桌面,因为它不是用户。(它是在后台运行的服务)。为什么后台服务需要启动浏览器(GUI应用程序)?如果你需要这样做,你的应用首先不应该是一种服务。