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, , 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) != -)
{
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;
}
}
}

调用部分:

        private void Button_Click(object sender, RoutedEventArgs e)
{
if (!Application.Current.IsRunningOutOfBrowser)
{
MessageBox.Show("Not Running OutOfBrowser!!");
return;
} ComObjectHelper.GetSelf().Run().Kill();
}

silverlight 4.0 的oob模式下,调用com通过wmi重启自身进程 killself的更多相关文章

  1. Silverlight之OOB模式下的一些事

    本文简介: 1.为什么要使用OOB?使用OOB的作用? 2.如何实现OOB模式 3.对OOB进行一些设置: 4.检测OOB的安装状态: 5.更新应用程序: 6.WebBrowser控件: 7.桌面通知 ...

  2. 【Siverlight - 扩展篇】Silverlight在OOB模式下实现默认打开最大化

      在App.xaml.cs中输入以下代码:在OOB客户端打开,可以实现窗口默认最大化: private void Application_Startup(object sender, Startup ...

  3. EF.Mysql在codefirst模式下调用存储过程,和再DbFirst模式下的调用

    List<GetUserUpCrmList_Result> r = null; using (var context = new HimallContext()) { var parame ...

  4. python在交互模式下直接输入对象后回车,调用的是对象的__repr__()方法,这个方法表示的是一个编码,用print+对象是调用对象的__str__方法

    交互模式下调用对象的__repr__()方法,这个方法表示的是一个编码 >>> u"国庆节快乐"u'\u56fd\u5e86\u8282\u5feb\u4e50' ...

  5. 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法

    一. 背景 上一个章节,介绍了EF调用两类SQL语句,主要是借助 ExecuteSqlCommand  和 SqlQuery 两个方法来完成,在本章节主要是复习几类存储过程的写法和对应的EF调用这几类 ...

  6. IIS 7.0的集成模式和经典模式

    IIS7.0中的Web应用程序有两种配置模式:经典模式和集成模式.经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库, 原先运行于IIS6.0下的Web应用程序迁移到IIS7 ...

  7. ART模式下基于dex2oat脱壳的原理分析

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78513483 一般情况下,Android Dex文件在加载到内存之前需要先对dex ...

  8. 结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例

    FireBreath是跨浏览器跨操作系统的插件方案,它封装了ActiveX和NPAPI的插件接口,使用统一的API来暴露JSAPI.Chrome和FireFox使用NPAPI,IE使用ActiveX. ...

  9. IIS7部署报错 500.22错误 检查到这集成托管模式下不使用的ASP.NET配置

    公司的一个项目,环境为: .Net 4.0 + MVC3,部署在Windows Server 2003R2 IIS6.0上面运行正常, 迁移到新服务器Windows Server 2008R2,部署在 ...

随机推荐

  1. AlloyRenderingEngine开门大吉

    快速入口 不读文章可以直接拐向这里: github:https://github.com/AlloyTeam/AlloyRenderingEngine website:http://alloyteam ...

  2. ListDefinition Tips

    1)ListTemplate.Type位数不能太长(最长7位),否则启用内容类型后,列表设置中会抛异常. <ListTemplate Name="List1" Type=&q ...

  3. Activity详解三 启动activity并返回结果

    首先看演示: 1 简介 .如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int ...

  4. MRC下多个对象的内存管理

    //set方法传递进来对象的生命周期,要求是在当前对象销毁之前,它一直存在就好- (void)setCar:(Car *)car{ //1.判断set方法传递进来的值是否与成员变量中保存的是同一个对象 ...

  5. Windows操作系统优化(Win7版) - 进阶者系列 - 学习者系列文章

    Windows系统优化是个永恒的话题.在操作系统的打包制作方面更是有得一拼.前面提到的龙帝国社区的XP系统就是一个典型的例子,打包好的系统就已经是经过优化的,使用者无需再使用优化工具进行处理.下面就对 ...

  6. maven工程模块化

    前言 项目的模块化有利于任务分工,后期维护,易扩展,模块还可以独立成服务单独部署等: 创建packaging类型为POM的父项目 我用的maven插件是m2e,相信大部分人在eclipse装的也是m2 ...

  7. RMAN冷备份异机还原

    1:环境准备 在新的服务器上安装ORACLE实例,安装过程中需要注意源服务器与目标服务器的ORACLE_SID一致,另外确保安装路径与源路径一致(不仅是安装目录,甚至包括数据文件.控制文件目录.联机重 ...

  8. SQL Server Replication 中关于视图的点滴

    在服务器A数据库TEST新建了一个本地发布(Local Publications)RPL_GES_MIS_TEST,在服务器B数据库RPL_TEST上创建了一个本地订阅(Local Subscript ...

  9. service mysql start出错,

    service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下: [root@ctohome.com ~]# service ...

  10. 【Windows编程】系列第七篇:Menubar的创建和使用

    上一篇我们学习了利用windows API创建工具栏和菜单栏,与上一篇紧密联系的就是菜单栏,菜单栏是一个大多数复杂一些的Windows应用程序不可或缺的部分.比如下图就是Windows自带的记事本的菜 ...