silverlight 4.0 的oob模式下,调用com通过wmi重启自身进程 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, , 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的更多相关文章
- Silverlight之OOB模式下的一些事
本文简介: 1.为什么要使用OOB?使用OOB的作用? 2.如何实现OOB模式 3.对OOB进行一些设置: 4.检测OOB的安装状态: 5.更新应用程序: 6.WebBrowser控件: 7.桌面通知 ...
- 【Siverlight - 扩展篇】Silverlight在OOB模式下实现默认打开最大化
在App.xaml.cs中输入以下代码:在OOB客户端打开,可以实现窗口默认最大化: private void Application_Startup(object sender, Startup ...
- EF.Mysql在codefirst模式下调用存储过程,和再DbFirst模式下的调用
List<GetUserUpCrmList_Result> r = null; using (var context = new HimallContext()) { var parame ...
- python在交互模式下直接输入对象后回车,调用的是对象的__repr__()方法,这个方法表示的是一个编码,用print+对象是调用对象的__str__方法
交互模式下调用对象的__repr__()方法,这个方法表示的是一个编码 >>> u"国庆节快乐"u'\u56fd\u5e86\u8282\u5feb\u4e50' ...
- 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法
一. 背景 上一个章节,介绍了EF调用两类SQL语句,主要是借助 ExecuteSqlCommand 和 SqlQuery 两个方法来完成,在本章节主要是复习几类存储过程的写法和对应的EF调用这几类 ...
- IIS 7.0的集成模式和经典模式
IIS7.0中的Web应用程序有两种配置模式:经典模式和集成模式.经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库, 原先运行于IIS6.0下的Web应用程序迁移到IIS7 ...
- ART模式下基于dex2oat脱壳的原理分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78513483 一般情况下,Android Dex文件在加载到内存之前需要先对dex ...
- 结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例
FireBreath是跨浏览器跨操作系统的插件方案,它封装了ActiveX和NPAPI的插件接口,使用统一的API来暴露JSAPI.Chrome和FireFox使用NPAPI,IE使用ActiveX. ...
- IIS7部署报错 500.22错误 检查到这集成托管模式下不使用的ASP.NET配置
公司的一个项目,环境为: .Net 4.0 + MVC3,部署在Windows Server 2003R2 IIS6.0上面运行正常, 迁移到新服务器Windows Server 2008R2,部署在 ...
随机推荐
- C语言中把数字转换为字符串 【转】
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...
- js 假值
function demo(a){ if(a){ console.log(111); }else{ console.log(222); } } demo(0) html_dom.html:27 222 ...
- iOS之App加急审核详细步骤
申请加急网址:https://developer.apple.com/appstore/contact/appreviewteam/index.html 补充:加急审核说明是可以写中文的 提交加急审核 ...
- iOS 学习 - 21 系统自带解析 XML
准备工作: new -> file -> other -> Empty ,在 Save As: 中随便起个名字后缀为 .xml 拷贝下面 <person> <stu ...
- 实现Discuz论坛客户端应用源码
通过使用该源码,开发者可以迅速地将Discuz论坛迁移到Android客户端中.不需要任何的开发工作即可拥有属于自己论坛的Android客户端 源码下载:http://code.662p.com/vi ...
- CocoaPods升级安装三方库报错
CocoaPods升级后(最新版本1.0.1),安装第三方库的时候会报如下错误: The dependency `AFNetworking (~> 3.1.0)` is not used in ...
- java读取.properties文件
在web开发过程中,有些配置要保存到properties文件里,本章将给出一个工具类,用来方便读取properties文件. 案例: 1:config.properties文件 name=\u843D ...
- ORA-00911: invalid character --- 字符集的问题
网上搜了一遍, 大多数是因为分号( ; ) 的问题. 而我的sql文件是没有分号的, 最后发现是sql文件编码和服务器字符集的差异造成 sql文件怎么都看不出问题,直到在UltraEdit里切换到1 ...
- C++STL - 类模板
类的成员变量,成员函数,成员类型,以及基类中如果包含参数化的类型,那么该类就是一个类模板 1.定义 template<typename 类型形参1, typename 类型形参2,...&g ...
- jQuery的deferred对象详解
jQuery的deferred对象详解请猛击下面的链接 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_ ...