想通过WebService来启动服务器上的一个exe应用程序(这个exe是有用户界面的)。
[WebService]
public void Test()
{
 Process.Start("E://FormsServer.exe");
}
出现的问题:
    程序没有启动,但是在任务管理器里面可以看到这个exe的进程,用户是aspnet。
我试过的方法:
    1,把exe放到webService目录下,并且允许写入的权限。在文件夹上添加了aspnet所有权限。
    2,IIS使用的是windows身份验证,客户端添加了NetworkCredential,使用的是administrator账户。
    3,在服务里面把“ASP.NET 状态服务”登录设置“允许与桌面交互”
    4,在网上有看资料,通过webService,默认是使用aspnet用户,这个用户的权限比较低。必须模拟一个更高的用户。
    我在web.config里面模拟里管理员帐户。
    <identity impersonate="true" userName="58f7ef23d0c0460\Administrator" password="***" />
   但是好像不成功,因为我在任务管理器里面看到exe进程的用户还是aspnet。
请各位帮帮我,提前感谢。

解决方案 »

  1.   

    http://www.cnblogs.com/sekihin/archive/2008/07/29/1255650.html参考
      

  2.   

    关键是aspnet是个比较特殊的帐户, 你可以给他提供user级别的账号试试.
      

  3.   

    http://topic.csdn.net/t/20060426/21/4716454.html
      

  4.   

    king19840811 ,
      您好,谢谢您的回复。我按照你的方法试了,界面还是出不来,任务管理器中可以看到这个程序的进程。是不是还要设置什么东西?
      

  5.   

    你的webservice在那里?本机么?你这样的设计有什么特殊用途,webservice即使调用成功窗体也是显示在webservice服务器上,客户端调用也看不到什么,每调用一次webservice启动一个程序谁来关闭?进程互斥?............................
      

  6.   

    问题已经解决。谢谢各位的参与。 
    在“服务”里面找到“IIS Admin”,双击,“登录”,勾选“服务与桌面交互”。重启iis。 
    只要这样设置,不要去模拟administrator用户来调用iis方法了,使用匿名访问就可以了。但是为了安全起见,建议还是加上用户验证