silverlight 的oob模式下,重启自身进程 killself

silverlight目前开发的应用,想做到系统内注销后自动重新启动下 sllauncher.exe ,实现方式是通过WMI的COM接口,获取到当前应用的执行命令行(CommandLine);并通过shell运行;代码如下:


#region Using Section

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices.Automation;
using System.Windows;

#endregion

namespace KillSelf
{
public class ComObjectHelper
{
private static List<string> GetProcess()
{
var result = new List<string>();
try
{
dynamic objLocator = AutomationFactory.CreateObject("WbemScripting.SWbemLocator");

dynamic objWmiService = objLocator.ConnectServer(".", "root\\cimv2");

dynamic query =
objWmiService.ExecQuery("Select * from Win32_Process");

foreach (dynamic o in query)
{
//string value = "ExecutablePath = " + o.CommandLine + "\r\n";
//Console.WriteLine(value);

result.Add(o.CommandLine + "");
}

return result;
}
catch (Exception ex)
{
MessageBox.Show("Get Process:" + ex.Message);
}
return null;
}

internal static void Exec(string cmdline)
{
try
{
dynamic cmd = AutomationFactory.CreateObject("WScript.Shell");
cmd.Run(cmdline, 1, false);
}
catch (Exception ex)
{
MessageBox.Show("Execute Process:" + ex.Message);
}
}

public static SlProcess GetSelf()
{
string[] procs = GetProcess().ToArray();

foreach (string p in procs)
{
string cmdline = p.ToLower();
if (cmdline.IndexOf("sllauncher.exe", StringComparison.Ordinal) != -1)
{
return new SlProcess(cmdline);
}
}
throw new NullReferenceException("未找到SLLauncher.exe进程");
}
}

public class SlProcess
{
public SlProcess(string cmdline)
{
CommandLine = cmdline;
}

public string CommandLine { get; set; }

public SlProcess Run()
{
ComObjectHelper.Exec(CommandLine);
return this;
}

public SlProcess Kill()
{
Application.Current.MainWindow.Close();
return this;
}
}
}

调用部分:

?





1

2

3

4

5

6

7

8

9

10

private
void Button_Click(object
sender, RoutedEventArgs e)

{

    if
(!Application.Current.IsRunningOutOfBrowser)

    {

        MessageBox.Show("Not Running OutOfBrowser!!");

        return;

    }

    

    ComObjectHelper.GetSelf().Run().Kill();

}

silverlight 的oob模式下,重启自身进程 killself,布布扣,bubuko.com

时间: 2024-10-29 19:10:53

silverlight 的oob模式下,重启自身进程 killself的相关文章

Android KK后为何工厂模式下无法adb 无法重启机器 ?

前言 欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 KK 以后 为何工厂模式下无法adb reboot ? 正常情况下adb reboot 可以重启. [Keyword] adb reboot, factory mode, 工厂模式, 工厂模式无法重启 [版本约束] android 4.4,  KK 或者KK 以后版本

linux下的守护进程

Linux下的常驻进程的作用不可忽略,但这里面的问题也不能忽略,怎么启动进程,怎么结束进程,怎么在进程挂掉之后重启进程都要设计的合理.下面看一个shell控制的php常驻进程的例子. 不废话,直接捞干货,上代码,通过代码来讲解更容易理解: #!/bin/sh #filename test.sh #绝对定位该文件的位置,不随执行目录而变化 cd $(cd "$(dirname "$0")";pwd) readonly path=$(pwd)/ file=$1; Run

Apache Spark源码走读之15 -- Standalone部署模式下的容错性分析

欢迎转载,转载请注明出处,徽沪一郎. 概要 本文就standalone部署方式下的容错性问题做比较细致的分析,主要回答standalone部署方式下的包含哪些主要节点,当某一类节点出现问题时,系统是如何处理的. Standalone部署的节点组成 介绍Spark的资料中对于RDD这个概念涉及的比较多,但对于RDD如何运行起来,如何对应到进程和线程的,着墨的不是很多. 在实际的生产环境中,Spark总是会以集群的方式进行运行的,其中standalone的部署方式是所有集群方式中最为精简的一种,另外

fcgi模式下编译安装LAMP+xcache

php的工作模式: php在lamp环境下共有三种工作模式:CGI模式.apache模块.FastCGI模式.CGI模式下运行PHP,性能不是很好.作为apache的模块方式运行,在以前的课程中编译安装lamp已经介绍过了.FastCGI的方式和apache模块的不同点在于:FastCGI方式PHP是一处独立的进程,所有PHP子进程都由PHP的一个叫作php-fpm的组件负责管理:而apache模块化方式运行的PHP,则是apache负责调用PHP完成工作.PHP的FastCGI方式性能要比ap

在WinSrv 2016 Core模式下安装Exchange Server 2019预览版

之前的Exchange Server很多版本大家都很熟知,但每次安装Exchange Server都是必须安装在具备GUI图形化界面的Windows Server上的,很多人觉得Windows Server的GUI图形化很占资源并且容易导致人为的误操作而影响系统的稳定性,那么在未来发布的Exchange Server 2019版本中会是第一个支持在Windows Server Core模式下安装的Exchange Server,这样就大大提高了Windows Server对Exchange Se

[PHP] swoole在daemonize模式下,chdir失效问题

swoole version: 1.9.6 其实跟swoole的版本无关,因为原代码体系,fpm模式下,在启动的时候,是使用 chdir 函数改变了当前目录的,而其它代码在做类的自动加载的时候,都是写的相对地址,而不是绝对地址. 问题就来了,swoole是多进程的,在daemonize模式下,chdir改变当前目录,在其它进程下是不生效的,所以有时候,不使用daemonize没问题,而使用daemonize会莫名的出现找不到类的情况. 解决方法是,在几个启动的回调里面同时也改变一下目录 $ser

IIS8集成模式下打开静态资源被aspx处理程序处理,StaticFileModule失效问题分析

问题描述: 打开js,css,jpg之类的静态资源文件触发了asp.net mvc的权限认证,并不是直接返回静态内容 问题分析: StaticFileModule 失效 ,可能是文件权限问题 问题解决: 由于在集成模式下,默认进程标识是应用程序池名称相同的"用户", 如应用程序池为 tom, 那么在进程管理器中,w3wp.exe的用户即为tom 而IIS中要动态的为这种标识设计权限则需要同时给 IIS_IUSERS组  和  IUSR组设置完全控制权限!!! 记得是同时设置. 如果仅给

linux系统下重启tomcat的shell脚本

linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32 #找到tomcat进程的id并kill掉 ps -ef |grep tomcat |awk {'print $2'} | sed -e "s/^/kill -9 /g" | sh - #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/*

oracle非归档模式下的冷备份和恢复

查看归档的相关信息 SQL> archive log list数据库日志模式             非存档模式自动存档             禁用存档终点            USE_DB_RECOVERY_FILE_DEST最早的联机日志序列     72当前日志序列           74 备份中常用的术语解释: 冷备份(脱机备份): 数据库处于关闭状态下所做的物理拷贝.数据库处于非归档模式下只能使用这种方法备份. 数据库全备份:备份所有数据文件和控制文件,在全备份时,数据库可以处在