winfrom 小问题 大回报了

Wicho开源开发中 2011-09-01 05:12:40
如何利用C#实现判断当前系统是否正在执行安装软件
请给个思路,打酱油的去隔壁,咱家卖醋的!!!!!!!
...全文
293 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 linjf520 的回复:]

如果只是判断标准的安装。就比较容易。

如三楼朋友所说的:判断 msiexec.exe 进程,就是标准安装。

如果非标准安装:

我觉得这个比较难实现吧。

因为安装程序,不一定都是以统一的方式安装,因为安装程序可以自己写。

而有些安装是比较全面的,包括在,系统盘下的ProgramsFiles文件夹低下有信息,还有注册表。

还有安装的路径下的信息。

都不是所有……
[/Quote]

不错 不过我安装的都是微软的组件 但是 要求 不同时 调用两个安装包
Jave.Lin 2011-09-02
  • 打赏
  • 举报
回复
如果只是判断标准的安装。就比较容易。

如三楼朋友所说的:判断 msiexec.exe 进程,就是标准安装。

如果非标准安装:

我觉得这个比较难实现吧。

因为安装程序,不一定都是以统一的方式安装,因为安装程序可以自己写。

而有些安装是比较全面的,包括在,系统盘下的ProgramsFiles文件夹低下有信息,还有注册表。

还有安装的路径下的信息。

都不是所有安装程序都有的。

因为有些安装程序不是按这个统一。

最显示的就是一些恶意程序了。

如:我可以写一个程序,只是绿化的释放一些程序运行必要的文件即可。这个没有一个标准,你根据判断不了。

所以你应该把问题,分类的确定到:如何判断,标准的,或是统一的安装。
krenyelang 2011-09-02
  • 打赏
  • 举报
回复
来学习的。
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 shwicho 的回复:]

C# code


public static bool ExistProcess()
{
Process [] processName={"a.exe","b.exe","c.exe","d.exe","e.msi","f.msi"};
for(int i=0;i<processName.Length;i++)
{
var processes=Process.GetProcesses……
[/Quote]

这个return 错了 忽略 return 只问这个可以实现 判读当前进程是否存在指定的进程
  • 打赏
  • 举报
回复


public static bool ExistProcess()
{
Process [] processName={"a.exe","b.exe","c.exe","d.exe","e.msi","f.msi"};
for(int i=0;i<processName.Length;i++)
{
var processes=Process.GetProcessesByName(processName[i]);
foreach(var process in processes)
{
retrun true;
}
retrun false;
}

}

山东蓝鸟贵薪 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shwicho 的回复:]
无论是 CSDN 还是其他的博客 我的问题一直是关注率最低,解决率最低...
今天不打算结贴 下周一结贴 多帖几日,求 关注...
[/Quote]
可能是分有问题吧
  • 打赏
  • 举报
回复

看了一篇文章说了一个女程序的自白 最后的一句是 人生没有IF ELSE ,有人回帖 说人生没有Switch case ,其实我们的人生 只有 while ,当 while 到一定的时候我们就会Break 却不是continue...很少有人使用 Continue... 很多初出茅庐的毛头小子 不懂的自己的这个脚本该如何书写,一心的妄图自己可以 使用 GOTO ...一个不完整的脚本,我们的goto 到哪里呢?起点...?给自己的脚本中多使用点Continue,少点Break...一切会更好
halo_world 2011-09-02
  • 打赏
  • 举报
回复
我觉得这个不是个小问题
熙风 2011-09-02
  • 打赏
  • 举报
回复
刚到隔壁打完酱油,再到你这里买醋。。
  • 打赏
  • 举报
回复

CSDN中如何抛出异常? 我想把这些异常的都给抛出去
iangenius 2011-09-02
  • 打赏
  • 举报
回复
关注 学习
徐州小夏 2011-09-02
  • 打赏
  • 举报
回复
根据标题找窗口。
诺维斯基 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wnyxy 的回复:]
我是来买醋的~~
[/Quote]
呵呵
  • 打赏
  • 举报
回复

程序已终止 但是在进程中还是存在,这个判断出来了的不是有问题了吗?这样会影响后续程序的运行啊
Jave.Lin 2011-09-02
  • 打赏
  • 举报
回复
提供思路:

只要判断“当前所有窗体”没有一些“微软提供的安装组”件“共有”的“特性”就能解决这一问题了。
funxu 2011-09-02
  • 打赏
  • 举报
回复
如果你要做安装程序的话,就是在主线程启动后再启线程去安装其他的小东西,而防止程序两次运行,只需要判断主线程就可以了
funxu 2011-09-02
  • 打赏
  • 举报
回复
既然都是微软的msiexec.exe 应该足够了,而且这东西本身就会判断有一个安装程序正在运行
除非你自己写一个释放程序,在安装时执行
  • 打赏
  • 举报
回复
没人回了啊 都沉到太平洋底了
萧炎 2011-09-01
  • 打赏
  • 举报
回复
思路?
LZ我个人愚见:
可以读取所以进程的名字,也就是任务管理里面的那个进程
这个获取进程的名字LZ大可以百度下有源码

然后循环判断看你执行的文件的名字是否和进程中某一个名字相同
如果相同那么证明这个程序运行起的,如果没有相同的那么就不存在这个进程,也就是没有执行
ncqingchuan1976 2011-09-01
  • 打赏
  • 举报
回复
通过WMI应该可以解决
加载更多回复(13)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧