[转]获取Setup文件的运行路径
想到以前在做项目时要求程序只能有一个运行实例,这种方法来处理岂不是很好,换种思路来处理:先取得当前运行的所有Process然后再找到那个Setup或是*.msi那不就好了。想到着就赶快动手试验,在程序中加上处理代码,很快搞定。
string tmp = "";
int i = 0;//调试时为了查找线程的个数
foreach (Process pro in processes)
{
//MSI Title即为你的打包文件在运行时显示的标题
if (pro.ProcessName.ToLower() == "msiexec" && pro.MainWindowTitle == "MSI Title")
{
//这里在Vista下测试时因为要读写文件(由于Vista使用了UAC来增强安全性,
//要求必须以管理员身份运行,而直接运行msi文件只能以普通权限来运行),
//所以不让用户直接运行MSI文件,而要求必须从Setup.exe文件运行,
//如果你不需要在Vista下使用则不用如此处理
MessageBox.Show("Please run setup.exe", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw new InstallException("run");
}
else if (pro.ProcessName.ToLower().IndexOf("setup") && pro.MainWindowTitle == "MSI Title")
{//判断ProcessName是否是setup,并且其MainWindowTitle为你的安装文件的Title
tmp = tmp + pro.Id + "" + pro.ProcessName + Environment.NewLine;
tmp = tmp + " " + i.ToString() + "=" + pro.MainModule.FileName + Environment.NewLine;//pro.MainModule.FileName即为Setup的完整运行路径
tmp = tmp + " " + i.ToString() + "=" + pro.MainWindowTitle + Environment.NewLine;
}
}
MessageBox.Show(tmp);
不过此方法有点不妥之处,那就是如果用户改变了Setup.exe或是*.msi的文件名就不好处理了,为了防止在用户更改文件名后运行安装,你可以在程序中加上判断文件名更改的处理,给用户提示。
[转]获取Setup文件的运行路径相关推荐
- IOS中获取各个文件的目录路径的方法和NSFileManager类
转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...
- Java反射机制 课外01:获取一个文件的绝对路径
一.获取一个文件的绝对路径 方式一:New FileReader("Name"); -- 这种方式的路径缺点是:移植性差,在IDEA中默认的当前路径是project的根. publ ...
- java获取文件绝对路径_java 如何获取一个文件的绝对路径。。。
你的位置: 问答吧 -> JSP -> 问题详情 java 如何获取一个文件的绝对路径... 例如 InputStream inStream=new FileInputStream(&qu ...
- ios中获取各种文件的目录路径方法
2019独角兽企业重金招聘Python工程师标准>>> iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. docume ...
- iOS - 中获取各种文件的目录路径的方法
转自:https://www.cnblogs.com/zrr-notes/p/5953445.html 我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4 ...
- PHP获取当前文件的绝对路径
dirname(__FILE__) 取到的是当前文件的绝对路径,也就是说,比起相对路径,查找速度是最快的. 如果重复一次可以把目录往上提升一个层次: 比如:$d = dirname(dirname ...
- iPhone PHP获取文件,IOS中获取各种文件的目录路径的方法
iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory ...
- (转)IOS中获取各种文件的目录路径的方法
iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.documents,tmp,app,Library.(NSHomeDirectory() ...
- java中如何获取当前文件的物理路径?
(一)在web工程中 方法1: 根据系统变量,如获取tomcat物理路径 String tomcatHome = System.getenv("TOMCAT_HOME"); ...
最新文章
- 粒子群算法(1)----粒子群简要
- 感知哈希算法(perceptual hash algorithm),
- 使用Docx4j操作PPT指南系列(附一)
- B站面试官炫耀身价过亿,贬低北邮应试者引热议!不知北邮毕业的B站创始人作何感想?
- [转]Javascript 绝句
- 编程题:二维平面整数点集求最大值
- Winform下的Combox根据值来选中项
- JDK1.10+scala环境的搭建之linux环境(centos6.9)
- POJ 2808 校门外的树
- [WCF Step by Step 读书笔记] Chapter01 WCF 介绍
- 刘鹏教授为江苏移动大数据和网络部门作报告
- OSGi运行环境下java反序列化问题的解决方式
- 数据分析必备软件Excel安装包+激活工具
- java代码实现分页_Java分页实现(示例代码)
- 主控域NTP时间同步(PTP时钟同步服务器)配置方法
- MATLAB求函数零点与极值
- 分享200个App移动端模板---总有一个适合你
- c语言答案-贾宗璞 许合利,c语言程序设计答案贾宗璞许合利
- [总结]FFMPEG命令行工具之ffmpeg详解
- vue put 提交 400 Bad Request(有时候可以提交成功)
热门文章
- 读芯片信息出错3_数字传感器的电路设计,跟着芯片哥学你也会
- 12.PHP_PDO数据库抽象层
- POJ1789简单小生成树
- 操作系统原理第七章:死锁
- C语言经典例80-猴子分桃
- 【Linux 内核】CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )
- 【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )
- cgi、fastcgi、php-cgi、php-fpm的关系
- String 课后作业2
- Hibernate中的Entity类之间的继承关系之一MappedSuperclass