判断一个程序不是第一次运行

she8275081 2011-07-10 03:48:31
这是一个启动工具优化的项目,第一次启动程序读取配置文件ini的信息。然后顺序启动配置文件的进程。(进程分常驻进程,和不是常驻进程)。。第二次启动也要读取配置文件。然后如果不是第一次启动就只检查常驻进程是存在还是不存在。如果存在跳过。不存在启动。。
现在我不知道怎么判断程序是不是第一次启动。。。之前是用判断C盘master文件存在与否来判断的。因为第一次启动会新建一个文件在C盘。但是这样做。经理说不行。他说可以用两个参数的。我不懂了。不知道怎么实现??还希望大家给点指导。我分不多。还望不要介意。谢谢。
...全文
301 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
vann1982 2011-07-28
  • 打赏
  • 举报
回复
mutex 保证不重复启动
3m2u 2011-07-28
  • 打赏
  • 举报
回复
CreateMutex
maquan 2011-07-28
  • 打赏
  • 举报
回复
还是 #3 楼最老道,顶!


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
williamsong997 2011-07-28
  • 打赏
  • 举报
回复
用互斥吧
把以下代码放到initialinstance里面
CString szAppName = "Test"; //程序名
HANDLE hMutex = OpenMutex (MUTEX_ALL_ACCESS, TRUE, szAppName);
if( hMutex )
{
CloseHandle (hMutex);
//程序不是第一次运行
return FALSE;
}
else
{
//程序第一次运行
}
m_hMutex = CreateMutex (0, TRUE, szAppName);
Eleven 2011-07-28
  • 打赏
  • 举报
回复
你可以创建一个内存映射文件,将计数保存
cwh5635 2011-07-28
  • 打赏
  • 举报
回复
mutex,或者以寫打開某個文件。。。
或者是找進程,也可以去找窗口。。。。。。。。。lz隨便用。。。
SEESEECN 2011-07-28
  • 打赏
  • 举报
回复
可以用互斥啊
畅想畅享 2011-07-24
  • 打赏
  • 举报
回复
才有互斥行得通
还没淹死的鱼 2011-07-22
  • 打赏
  • 举报
回复
这个。。。。。。用互斥体不行么?
she8275081 2011-07-22
  • 打赏
  • 举报
回复
谢谢二楼的答案..网络评分了..
Lactoferrin 2011-07-10
  • 打赏
  • 举报
回复
#include <conio.h>
#include<stdio.h>
#pragma comment(linker, "/section:f,RWS")
#pragma data_seg("f")
static int c=0;
#pragma data_seg()

int main()
{
printf("%d",++c);
getch();
return 0;
}

多运行几个实例看看
见习学术士 2011-07-10
  • 打赏
  • 举报
回复
可以在注册表、配置文件做个标记,和你在C盘创建文件是一个道理。

用参数的话,可以在程序入口(比如main())时候参数,如果不带参数运行的话就启动一个保护进程。比如你的进程是a.exe
那么直接运行a.exe 的话 那它就再启动 a.exe -protect ,在a程序里面接受-protect 才参数,启动一个监视线程,然后在线程里面去做你的需求判断。

这种逻辑相当于是双进程保护,可以用于你的需求
tx183584 2011-07-10
  • 打赏
  • 举报
回复
可以获取当前毫秒时间来判断...

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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