2012-05-10 17 views
2

プログラムを以前にC#で実行した回数を、ファイルを保持せずに集計する方法を教えてください。カウントをチェックするために、C#にApplicationクラスまたは何かがありますか? 私はそれについて何も分かっていないので、詳しいexplantionを与えてください。これはWindowsフォームアプリケーションではないWindowsコンソールアプリケーションです。プログラムが起動された回数をカウントする

+0

どのようなアプリですか? winforms? wpf? – Habib

+3

私はあなたが何らかの形のディスクストレージにそれを保存せずにカウントを保存することができるとは思わない。 – Habib

答えて

3

あなたはRegistryのエントリを作成することができます。もう1つの方法はApplication Settingsです。

しかし、私はApplication Settingsを好んでいます。なぜなら、これはあまりタスクが少ないからです。 Windowsのの
See HERE: Creating an Application Settings.
Tutorial From Youtube

+0

+1最もクリーンな解決策を提案するから。 – SimpleVar

+1

アプリケーションの設定は、コードが明示的にファイルに触れたり触れたりする必要がない場合でも、技術的にはOP要件に違反するように、ディスク上のファイルに保存されます。 – Servy

2

最近のバージョンは自動的にHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist下のレジストリにこの情報を維持します。

データはROT13で難読化されていますが、簡単に解読できます。 free utility(ソースコード付き)が利用可能であり、あなたの出発点として役立ちます。

2
  1. プログラムが起動するたびに(データベースに接続されていると仮定して)、データベースまたはWebサービスにメッセージを送信できます。

  2. 標準的なストレージデバイスではないため、テクニカルにはファイルではありません。

  3. (レジストリエントリがあるレベルでファイルのどこかに保持されているという事実を無視すると)カウントを保持するレジストリエントリを作成できます。

  4. あなたは、カウントを記録しているどこかのファイルを持つことができます。なぜあなたは最初にこれに反対しているのか分かりません....

+0

+1あなたが実際に "ファイルを保持せずに集計する"というOPの要件を満たすソリューションを実際に提供しているからです。 –

0

Winformsアプリケーションを実行している場合、アプリケーション設定を簡単に使用できます。あなたのソリューション名 - >プロパティ - >設定タブを右クリックします。 More info and tutorial here.

次に、プログラムが起動するたびにこの設定を増やして保存します。

0

参考:私の知識のWindowsではCount the number of times the Program has been launched

があなたのために、この情報を保持しません。あなたはどこかの値を集計する必要があります(ファイル、データベース、レジストリ設定)。

Properties.Settings.Default.FirstUserSetting = "abc";

そして、あなたは通常、メインフォームのClosingイベントハンドラに次の操作を行います。

良い方法はとしてApplication Settings次のとおりです。

Create setting in app.config、その後、としてそれを使用しています。設定メソッドを保存するための次のステートメント。

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のアプリなら、あなたはUPDATECOUNTを実行するために、フォームのOnClosingイベントをフックすることができます。

次にチュートリアルをチェックしてRead, write and delete from registry with C#

関連する問題