如何在不保留文件和计数的情况下获取程序先前在c#中运行的次数。是否有一个Application类或c#中的东西来检查计数。 请详细解释,因为我一无所知。这是一个Windows控制台应用程序,而不是Windows窗体。
答案 0 :(得分:3)
您可以在Registry
创建条目。另一种方法是使用Application Settings
。
但我更喜欢Application Settings
,因为它的任务较少。
See HERE: Creating an Application Settings.
Tutorial From Youtube
答案 1 :(得分:2)
最新版本的Windows会自动将此信息保存在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
下的注册表中。
数据使用ROT13进行模糊处理,但这很容易“解密”。 free utility(包含源代码)可用,可作为您的起点。
答案 2 :(得分:2)
每次程序启动时,您都可以向数据库或Web服务发送消息(假设有网络连接)。
您可以依赖某种形式的硬件,而不是标准的存储设备(因此技术上不是文件)。
您可以创建一个保留计数的注册表项(如果您忽略了注册表项在某种程度上保留在某个文件中的事实)。
您可以在某处跟踪记录计数。不知道你为什么一开始就反对这个......
答案 3 :(得分:0)
如果您正在运行Winforms应用程序,则可以轻松使用“应用程序设置”。右键单击解决方案名称 - >属性 - >设置标签。 More info and tutorial here.
然后,每次程序启动时,递增此设置并保存。
答案 4 :(得分:0)
参考:Count the number of times the Program has been launched
据我所知,Windows不会为您保留此信息。您必须在某处(文件,数据库,注册表设置)计算值。
更好的方式是Application Settings:
Create setting in app.config然后将其用作:
Properties.Settings.Default.FirstUserSetting = "abc";
然后,您通常在主窗体的Closing事件处理程序中执行此操作。以下语句用于保存设置方法。
Properties.Settings.Default.Save();
使用注册表实施:
static string AppRegyPath = "Software\\Cheeso\\ApplicationName";
static string rvn_Runs = "Runs";
private Microsoft.Win32.RegistryKey _appCuKey;
public Microsoft.Win32.RegistryKey AppCuKey
{
get
{
if (_appCuKey == null)
{
_appCuKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(AppRegyPath, true);
if (_appCuKey == null)
_appCuKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(AppRegyPath);
}
return _appCuKey;
}
set { _appCuKey = null; }
}
public int UpdateRunCount()
{
int x = (Int32)AppCuKey.GetValue(rvn_Runs, 0);
x++;
AppCuKey.SetValue(rvn_Runs, x);
return x;
}
如果它是WinForms应用程序,您可以挂钩Form的OnClosing事件以运行UpdateCount。