相关疑难解决方法(0)

无法从Windows 7上的Windows服务启动桌面应用程序

HI,

我在Windows 7上以具有管理员权限的用户身份登录C#WCF Windows服务.我想在服务启动后启动桌面应用程序.我发现的所有讨论都是关于Windows工作站和桌面的...我创建了一个单独的线程,设置了线程站和桌面,并尝试启动桌面应用程序.当我使用asp.net开发服务器从VS2010启动代码时,代码有效,但如果它是从服务启动的,则没有错误,但是没有启动进程.我试图以不同的用户启动进程并尝试调用CreateProcessWithLogonW(将startInfo.lpDesktop设置为"winsta0\default";之前).在这两种情况下,我都返回了processId,但无法看到桌面应用程序.有人可以帮我看看哪里出错了吗?

public class ExternalProcess
{
    const int READ_CONTROL = 0x20000;
    const int WRITE_DAC = 0x40000;
    const int DESKTOP_WRITEOBJECTS = 0x80;
    const int DESKTOP_READOBJECTS = 0x1;

    private Process extProcess;
    private string sFilePath = "";

    [DllImport("user32.dll")]
    private static extern bool SetThreadDesktop(IntPtr hDesktop);
    [DllImport("user32.dll")]
    static extern IntPtr OpenDesktop(string lpszDesktop, uint dwFlags,bool fInherit, uint dwDesiredAccess);
    [DllImport("user32.dll")]
    private static extern IntPtr GetProcessWindowStation();
    [DllImport("user32.dll")]
    private static extern IntPtr OpenWindowStation(string lpszWinSta, bool fInherit, ACCESS_MASK dwDesiredAccess);
    [DllImport("user32.dll")]
    private static extern IntPtr SetProcessWindowStation(IntPtr hWinsta);

    public bool …
Run Code Online (Sandbox Code Playgroud)

c# windows service wcf

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

标签 统计

c# ×1

service ×1

wcf ×1

windows ×1