zoukankan      html  css  js  c++  java
  • 通过网页或Serverice远程系统网站(服务)所在服务器本地的应用程序(未成功)

    近日接了一个奇葩需求,内容如题。

    实现过程中遇到一些问题,特将实现过程记录于此,供备忘及参考。

    首先尝试了正常启动进程的方法,代码如下:

            public string RunSPApp()
            {
                Process myProcess = new Process();
    
                string fileName = "D:Example.exe";
                if (!string.IsNullOrWhiteSpace(fileName))
                {
                    try
                    {
                        ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(fileName);
                        myProcess.StartInfo = myProcessStartInfo;
                        myProcess.Start();
                        return JsonConvert.SerializeObject(new { msg = "success" });
                    }
                    catch (Exception e)
                    {
                        return JsonConvert.SerializeObject(new { msg = e.Message });
                    }
                }
                else
                {
                    return JsonConvert.SerializeObject(new { msg = "Something Wrong!" });
                }
            }

    但这种方式调用,发现启动成功了,任务管理器中有进程,就是桌面不显示,经排查,发现进程所属用户是网站本身,故对代码进行了修改,以登录用户身份启动进程,代码如下

            public string RunSPApp()
            {
                Process myProcess = new Process();
    
                string fileName = "D:Example.exe";
                if (!string.IsNullOrWhiteSpace(fileName))
                {
                    try
                    {
                        ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(fileName);
                        myProcessStartInfo.UserName = "Administrator";
                        System.Security.SecureString password = new System.Security.SecureString();
                        string strPWD = "123456";
                        foreach (char c in strPWD.ToCharArray())
                        {
                            password.AppendChar(c);
                        }
                        myProcessStartInfo.Password = password;
                        myProcessStartInfo.UseShellExecute = false; // Process 对象必须将 UseShellExecute 属性设置为 False,才能作为用户启动进程。
    
                        myProcess.StartInfo = myProcessStartInfo;
                        myProcess.Start();
                        return JsonConvert.SerializeObject(new { msg = "success" });
                    }
                    catch (Exception e)
                    {
                        return JsonConvert.SerializeObject(new { msg = e.Message });
                    }
                }
                else
                {
                    return JsonConvert.SerializeObject(new { msg = "Something Wrong!" });
                }
            }

    这下显示调用成功了,但依旧,桌面不显示程序窗体,进程里也不显示了,查看日志

    至此,无解。

  • 相关阅读:
    Getting started with 3G | ip.access nano3G+OpenBSC+Osmocom-bb Part 1
    Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
    分析无线遥控器信号并制作Hack硬件进行攻击
    利用Hackrf One进行GPS定位欺骗制作超级跑马机
    使用OpenBTS基站测试物联网模块安全性
    在cmd中为命令设置别名以及启动cmd时自动执行bat
    Struts2、spring2、hibernate3在SSH中各起什么作用
    switch omega
    html转译字符 字符实体
    excel自定义数据验证
  • 原文地址:https://www.cnblogs.com/Vulpers/p/7685414.html
Copyright © 2011-2022 走看看