2

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

4

5 回答 5

3

你可以这样做,我在Registry. 另一种方法是使用Application Settings.

但我更喜欢Application Settings它,因为它要做的任务更少。
请参阅此处:创建应用程序设置。
来自 Youtube 的教程

于 2012-05-10T05:06:27.920 回答
2

最新版本的 Windows 自动在注册表中维护此信息HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

数据被ROT13混淆了,但这很容易“解密”。一个免费的实用程序(带有源代码)是可用的,可以作为您的起点。

于 2012-05-10T05:07:44.630 回答
2
  1. 每次程序启动时,您都可以向数据库或 Web 服务发送一条消息(假设有网络连接)。

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

  3. 您可以创建一个注册表项来保存计数(如果您忽略注册表项在某个级别上保存在某个文件中的事实)。

  4. 你可以在某个地方有一个文件来跟踪计数。不知道你为什么一开始那么反对这个....

于 2012-05-10T05:07:54.193 回答
0

如果您正在运行 Winforms 应用程序,则可以轻松使用应用程序设置。右键单击您的解决方案名称 --> 属性 --> 设置选项卡。 更多信息和教程在这里。

然后,每次你的程序启动时,增加这个设置并保存它。

于 2012-05-10T05:09:48.667 回答
0

参考:计算程序已启动的次数

据我所知,Windows 不会为您保留这些信息。您必须在某处(文件、数据库、注册表设置)计算值。

更好的方法是将应用程序设置为:

在 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。

然后查看教程以使用 C# 从注册表中读取、写入和删除

于 2012-05-10T05:33:33.820 回答