全系统持久性存储?

全系统持久性存储?,第1张

概述全系统持久性存储?

我的程序启动一个进程,我需要确保它在我可以再次运行程序之前被杀死。 为了做到这一点,我想将进程的开始时间存储为类似互斥体的内容,以便稍后检索并检查是否有进程具有匹配的名称和启动时间。

我怎么能这样做? 我不想在用户注销后坚持的硬盘上粘贴任何东西。

作为参考,我正在使用C#和.NET

如果打开DDE频道的应用程序崩溃,会发生什么情况?

.NET Charting图例标记大小

从IntPtr句柄获取Control / Form对象

检测符号链接,连接点,挂载点和硬链接

从.NET注册免费激活本机COM(activex)组件

当创build一个新线程时,对GUI的更改没有被制作(C#)

我可以在TransactionScope块中使用sqlConnection.BeginTransaction

用于.NET的可编程RAM磁盘API?

多次将相同的滤镜添加到DirectShowgraphics

OraolEDB.Oracle提供程序未在本地计算机上注册

您想要存储进程ID,而不是进程名称和开始时间。 这将使杀死进程变得更简单。 您可以将文件存储在%TMP%中,以便在硬盘驱动器空间不足时进行清理。

杀死进程的C#代码如下所示:

int pID = Convert.ToInt32(file.ReadAllText(pIDfile)); Process proc = Process.GetProcessByID(pID); proc.Kill();

你可以找到这样的%TMP%目录:

var tmp = Environment.GetEnvironmentvariable("TMP");

编辑:PID可以重复使用,所以你也需要处理。

我同意rossfabricant应该存储进程ID而不是名称。 进程ID不能重新使用,直到重新启动,所以这应该是安全的。

不过,我建议不要使用TMP环境变量进行存储,而应该查看“ 隔离存储” 。 就存储而言,这将更加面向.NET。 而且,它会降低运行应用程序所需的安全性。

不幸的是,注销之后,临时目录和孤立的存储都将保留,所以你需要逻辑来处理这种情况。 (然而,你的应用程序可以清除关闭的信息)。

如果您可以访问正在启动的进程代码,则最好使用命名管道或共享内存来检测应用程序是否正在运行。 这也给你一个更简洁的方法来关闭这个过程。 杀死一个进程应该是最后的手段 – 总的来说,我不会在设计需要杀死一个进程的时候建立一个应用程序,如果这个进程完全可以避免的话。

总结

以上是内存溢出为你收集整理的全系统持久性存储?全部内容,希望文章能够帮你解决全系统持久性存储?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1282361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存