如何才能在不修改文件、不修改注册表、不联网的情况下判断是否首次打开软件?

我来捣乱一下——

哎,你用这个小软件,看起来挺好使的,给我发一个!(让我复制一下!)

诶,这玩意儿怎么没用啊?连个提示都没有?!

为什么一定要不能有配置文件呢…
那随机往电脑不重要位置增加一个文件咋样?

eXe可太怪了…

特地注册一个账号来回答这个问题。

我之前是用文件的"程序下载到本地的创建时间"和"当前时间"来做判断的。
当前时间>=创建时间+1d 就视为不是第一次打开
当前时间<创建时间+1d 视为第一次打开

结合一下那个改文件后缀名的方案,可以拓展一下。
可以修改执行文件的 创建时间 和 修改时间属性。

默认这两个是不一样的
第一次打开时把这两个时间改成一致的
程序判断这两个时间一致就不展示提示 视为非第一次进入

我没有仔细看,, 请问一下问题是不是防止软件多开的?

我之前的一个思路是, 软件运行的时候占一个偏僻的端口,后续重复打开软件的时候,发现端口被占用了,那就说明已经有实例在运行了

不是,是为了首次进入显示软件提示……

如果只是为了阻止多开,不如直接在软件旁占用一个临时文件来的快吧……端口终究还是有被其他软件使用的可能性的

cpp:

HANDLE If_mute_process = CreateMutexA(NULL, FALSE, "XXXXXXXXXX");
  if (GetLastError() == ERROR_ALREADY_EXISTS) {
    CloseHandle(If_mute_process);
    If_mute_process = NULL;
    exit(0);
  }

ahk:

#SingleInstance force

修改文件时间是个好思路哎,顺着这个思路再拓展一下,第一次运行时把创建时间改为一个特定的时间,比如作者的生日,或者根据版本号计算一个时间之类的
另外还有文件属性这个也可以配合试试,比如只读
我试了下“脱机”属性,加上之后,我的小程序还是能够运行的,就是图标会变成脱机的图标 :joy: :joy: :joy:

可惜杀软了,这种基本上申报也很难从报毒名单里面出来……除了这个,优雅max,并且用户完全无感(不会真有人按文件创建时间排序吧),无非写的时候略微复杂了一点点罢了

軟件方面倒沒有,但文件一定有

啊?!我以为顶多有人按文件修改时间排序呢

存在即合理嘛~

這方面用來追蹤某些文件的過去很方便

有一个很危险的办法
我有找到过一个比我大十五岁左右的软件,是一个上个世纪的商业软件,其记录是否注册的方法是在计算机硬盘头部主引导扇区一个无关紧要的位置写入几个字节…
如果是现在的GUID分区表硬盘,没有主引导扇区,那就写在ESP/MSR分区

要不参考下Chromium浏览器的做法:
第一次打开后创建一个First Run 文件作为标记(貌似不符合不修改文件这一要求)?

修改程序名称不算修改文件?

算,但是对用户基本不可感。这题的核心思路其实就是让用户不可感知,同时不产生垃圾文件。
而90%以上的用户不显示文件扩展名,所以压根不知道,并且将exe修改为EXE也不影响文件现有功能,一举两得

@CCR @dog macOS长这样

哈哈哈哈