计算程序启动的次数

时间:2012-05-10 04:59:00

标签: c#

如何在不保留文件和计数的情况下获取程序先前在c#中运行的次数。是否有一个Application类或c#中的东西来检查计数。 请详细解释,因为我一无所知。这是一个Windows控制台应用程序,而不是Windows窗体。

5 个答案:

答案 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)

  1. 每次程序启动时,您都可以向数据库或Web服务发送消息(假设有网络连接)。

  2. 您可以依赖某种形式的硬件,而不是标准的存储设备(因此技术上不是文件)。

  3. 您可以创建一个保留计数的注册表项(如果您忽略了注册表项在某种程度上保留在某个文件中的事实)。

  4. 您可以在某处跟踪记录计数。不知道你为什么一开始就反对这个......

答案 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。

然后将教程检查到Read, write and delete from registry with C#