Сколько раз выполнила программа? C#

Используйте realpath () .

Эти realpath() функция должна произойти от пути, на который указывают file_name, абсолютный путь, который называет тот же файл, разрешение которого не включает' .', '..', или символьные ссылки. Сгенерированный путь должен быть сохранен как завершенная пустым указателем строка, максимум до {PATH_MAX} байты, в буфере, на который указывают resolved_name.

, Если resolved_name нулевой указатель, поведение realpath() определяется реализацией.

следующий пример генерирует абсолютный путь для файла, определенного symlinkpath аргументом. Сгенерированный путь хранится в массиве actualpath.

#include 
...
char *symlinkpath = "/tmp/symlink/file";
char actualpath [PATH_MAX+1];
char *ptr;


ptr = realpath(symlinkpath, actualpath);

6
задан Jon Seigel 6 March 2010 в 05:00
поделиться

7 ответов

Насколько мне известно, Windows не хранит эту информацию для вас. Вам нужно будет где-то подсчитать значение (файл, база данных, параметр реестра). Планировщик задач Windows имеет очень низкую функциональность.

10
ответ дан 8 December 2019 в 02:35
поделиться

@ Cheeso ,

Вам не нужна частная переменная-член с этим кодом, один из способов немного уменьшить ее:

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

Или, если вы хотите обновить частную переменную, чтобы не вызывать метод (в любом случае, это довольно дешевый метод), вы все равно можете сэкономить проверку if == null .

0
ответ дан 8 December 2019 в 02:35
поделиться

Я делаю это в настройках реестра.

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, вы можете подключить событие OnClosing формы для запуска UpdateCount .

13
ответ дан 8 December 2019 в 02:35
поделиться

Вот руководство по работе с реестром - Основы реестра C #

4
ответ дан 8 December 2019 в 02:35
поделиться

Вы можете просто создать параметр приложения с именем Properties.Settings.Default.TimesRun;

Используйте его так:

private void Form1_Load( object sender, EventArgs e )
{
   Properties.Settings.Default.TimesRun = timesrun++;
   Properties.Settings.Default.Save();
}
1
ответ дан 8 December 2019 в 02:35
поделиться

Нет, диспетчер задач не предоставляет такую ​​информацию. Мне было бы несложно создать сценарий, который обновлял бы счетчик, а затем запускал приложение, а затем настраивал задачу для вызова сценария.

0
ответ дан 8 December 2019 в 02:35
поделиться

Я рекомендую использовать базу данных ESENT, которая включена в Windows. Поддержка программного обеспечения легко доступна с помощью управляемого интерфейса ESENT .

0
ответ дан 8 December 2019 в 02:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: