程序运行了多少次? C#

时间:2009-08-05 15:00:10

标签: c# count scheduled-tasks execution

如何在不保存文件和计数的情况下获取程序以前在C#中运行的次数。如果不可能,可以从计划任务管理器获取吗?

致C. Ross:如何在注册表设置中完成?原谅我。 。 。什么是注册表设置?

9 个答案:

答案 0 :(得分:13)

我在注册表设置中执行此操作。

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

答案 1 :(得分:10)

据我所知,Windows不会为您保留此信息。您必须在某处(文件,数据库,注册表设置)计算值。 Windows任务计划程序的功能非常低。

答案 2 :(得分:7)

应用程序运行的时间存储在注册表中;但是有一些警告:

  1. 它存储在用户注册表中(例如HKCU)[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist]
  2. 路径存储在ROT13中,例如runme.exe将变为ehazr.rkr
  3. 注册表实际上以二进制形式存储三个值:最后一个运行时,运行计数(由于某种原因,从6开始而不是1),以及应用程序的名称。
  4. 不知道这是否有帮助,但你有它!

答案 3 :(得分:4)

以下是注册表处理的教程 - C# Registry Basics

答案 4 :(得分:1)

您只需创建名为Properties.Settings.Default.TimesRun;

application setting即可

像这样使用它:

private void Form1_Load( object sender, EventArgs e )
{
   Properties.Settings.Default.TimesRun = timesrun++;
   Properties.Settings.Default.Save();
}

答案 5 :(得分:0)

不,任务管理员不提供这种信息。我不难创建一个脚本来更新计数然后执行应用程序,然后设置任务来调用脚本。

答案 6 :(得分:0)

我建议使用Windows附带的ESENT数据库。 ESENT Managed Interface可以轻松获得软件支持。

答案 7 :(得分:0)

@ Cheeso

你没有需要私有成员变量与该代码,一种方法可以减少它:

using Microsoft.Win32;
public RegistryKey AppCuKey
{
    get
    {
        return Registry.CurrentUser.OpenSubKey(AppRegyPath, true)
            ?? Registry.CurrentUser.CreateSubKey(AppRegyPath);
    }
}

或者,如果您想更新私有变量,为了不再调用该方法(无论如何这是一种非常便宜的方法),您仍然可以保存自己 if == null 检查。

答案 8 :(得分:0)

int x = Your_Project.Properties.Settings.Default.Counter;
x++;
Your_Project.Properties.Settings.Default.Counter = x;
Your_Project.Properties.Settings.Default.Save();