相关疑难解决方法(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万
查看次数

如何从Windows服务运行控制台应用程序?

我有一个用c#编写的Windows服务,我需要从中运行一个控制台应用程序.控制台应用程序也用c#编写.

控制台应用程序运行时不是从Windows服务运行.当它从ws运行它没有做它应该做的任何事情,因为它应该工作10-20秒我在调试代码中看到立即执行.

我用以下代码启动我的控制台应用程序:

proc.Start(fullPathToConsole, args);
proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

控制台的路径是正确的,当我试图从cmd或只是在资源管理器(没有args)运行它时,它工作正常.但在运行该服务后,我认为没有效果.

我已经尝试转到服务属性并授予它访问桌面的权限,并在系统和我的用户下运行(也在服务属性中指定).一切都保持不变.

附加:我知道服务没有ui,我不想要.我希望服务运行控制台应用程序.无需从中获取任何数据或像ui一样使用此控制台,只需运行它就可以完成它的工作.

更新我发现,运行计算或任何其他Windows应用程序很容易.但仍然无法运行cmd或任何控制台应用程序.实际上我需要在XP SP2和Windows 2003 Server上运行它.所以无论如何都不需要与Vista交互.

任何评论都会很高兴!

c# windows-services console-application

29
推荐指数
3
解决办法
9万
查看次数

允许服务与Windows中的桌面交互

在services.msc>操作>属性>登录>允许服务与桌面交互,我启用了我的服务与桌面交互.这究竟是什么意思?如何使用它从我的服务中播放声音(MP3,WAV等)?

services.msc>操作>属性>登录>允许服务与桌面交互

c# desktop windows-services

14
推荐指数
3
解决办法
5万
查看次数

从Windows服务启动Windows应用程序

我试图使用下面的代码从Windows服务启动Windows应用程序

Process.Start(@"filename.exe");
Run Code Online (Sandbox Code Playgroud)

在Windows 7中,我收到一个弹出窗口,上面写着"在此计算机上运行的程序正在尝试显示消息"

.net c# windows windows-services

10
推荐指数
2
解决办法
2万
查看次数

在.NET应用程序上使用Phantom JS生成PDF

我一直在研究phantomJS,看起来它可能是一个使用生成PDF的好工具.我想知道是否有人成功地将它用于他们的.NET应用程序.

我的具体问题是:如何在服务器上使用rasterize.js等模块,接收请求并将生成的pdf作为响应发回.

我的一般问题是:在.NET应用程序中使用phantomJS是否有任何最佳实践.实现它的最佳方法是什么?

我在.NET World中相当新,我希望得到更详细的答案.感谢大家.:)

asp.net asp.net-mvc phantomjs

8
推荐指数
1
解决办法
1万
查看次数

如何在引发Timer事件时Windows服务启动进程?

我创建了一个带有Timer的Windows服务,并且在触发事件中timer.Elapsed我正System.Diagnostics.Process.Start(exe path)以5秒的间隔创建一个process().但是这个过程不会在事件发生时创建.

有没有其他方法这样做?

提前致谢.

private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{       

    Process pr = new Process();
    pr.StartInfo.FileName = @"C:\Program Files\Messenger\msmsgs.exe";
    pr.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
    pr.StartInfo.CreateNoWindow = false;
    pr.Start();
}
Run Code Online (Sandbox Code Playgroud)

.net c# windows-services process process.start

7
推荐指数
1
解决办法
2万
查看次数

如何从Windows服务打开cmd?

我正在创建Windows服务并使用C#。我想从服务中打开cmd.exe。我的操作系统是Windows8。是否可以从Windows服务中获取,或者是否还有其他选择。

(我想在一定间隔后打开cmd.exe-这就是为什么我选择Windows服务的原因)

c# windows-services

5
推荐指数
1
解决办法
3443
查看次数

注销服务器时Excel和C#出错

我用C#编写了一个Windows服务.我的服务是打开一个启用Excel宏的工作簿(这是在Excel 2010中).我已经在运行Windows Server 2008 64位的服务器上安装了此服务.当没有人在服务器上登录时,我的服务似乎在启动Excel时出现问题,是否有人有解决方案?

我收到以下错误:

System.Runtime.InteropServices.COMException(0x8000401A):由于以下错误,检索CLSID为{00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:8000401a.

Excel已安装在服务器上,当我登录服务器时服务正常,但是一旦所有用户都注销,我就会收到上述错误.无论服务器上是否有打开的会话,我都希望该服务能够启动我的Excel工作簿.

.net c# excel windows-services

3
推荐指数
1
解决办法
7803
查看次数