相关疑难解决方法(0)

如何从Windows服务启动进程到当前登录的用户会话

我需要从Windows服务启动一个程序.该程序是用户UI应用程序.此外,该应用程序应在特定用户帐户下启动.

问题是Window Services在会话#0中运行,但登录的用户会话是1,2等.

所以问题是:如何从窗口服务启动一个进程,使其在当前登录的用户会话中运行?

我强调的问题不在于如何在特定帐户下启动流程(很明显 - Process.Start(new ProcessStartInfo(".."){UserName = ..,Password = ..})).即使我安装我的Windows以在当前用户帐户下运行,该服务仍将在会话#0中运行.设置"允许服务与桌面交互"没有帮助.

我的Windows服务是基于.net的.

更新:首先,.NET在这里无关,它实际上是纯Win32的东西.这就是我正在做的事情.以下代码在我的Windows服务中(C#使用win32函数通过P/Inkove,我跳过导入签名,它们都在这里 - http://www.pinvoke.net/default.aspx/advapi32/CreateProcessWithLogonW.html):

    var startupInfo = new StartupInfo()
        {
            lpDesktop = "WinSta0\\Default",
            cb = Marshal.SizeOf(typeof(StartupInfo)),
        };
    var processInfo = new ProcessInformation();
    string command = @"c:\windows\Notepad.exe";
    string user = "Administrator";
    string password = "password";
    string currentDirectory = System.IO.Directory.GetCurrentDirectory();
    try
    {
        bool bRes = CreateProcessWithLogonW(user, null, password, 0,
            command, command, 0,
            Convert.ToUInt32(0),
            currentDirectory, ref startupInfo, out processInfo);
        if (!bRes)
        {
            throw new Win32Exception(Marshal.GetLastWin32Error());
        }
    }
    catch (Exception …
Run Code Online (Sandbox Code Playgroud)

.net windows-services

44
推荐指数
6
解决办法
7万
查看次数

Process.Start(/*pdf*/的路径)不适用于Windows 8上的Adobe Reader

我能够在我的C#/ WPF应用程序中创建PDF并使用以下命令运行它们:

Process.Start(_pathToPDFFile);
Run Code Online (Sandbox Code Playgroud)

这适用于Adobe Acrobat,但不适用于Adobe Reader.安装Adobe Reader时,Process.Start()除非Reader进程已在任务管理器中运行,否则不执行任何操作.

当我尝试启动PDF时,如何让Adobe Reader显示PDF?

c# adobe-reader process.start

11
推荐指数
1
解决办法
6189
查看次数

标签 统计

.net ×1

adobe-reader ×1

c# ×1

process.start ×1

windows-services ×1