conf t

インフラエンジニアのメモ

WindowsでC#を使用しランダムパスワードを生成する

以前ランダムパスワードをpowerhellで実行させる記事を書きました。

monaski.hatenablog.com

しかしながら、powershellには実行速度が遅いという欠点があり、
パスワードを生成するためだけにpowershellを立ち上げると結構待ちます。

そこでこれを改善すべく、C#で作り直しました。
C#は特別に呼び出したりせずとも.netをすぐに使えるので簡単ですし、
powershellより起動が速いです。

目次

作成手順

1 コーディング

まずはメモ帳で以下ファイルを作成します。

sample.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Genpass
{
    class GeneratePassword
    {
    [STAThread]
        static void Main(string[] args)
        {
            string pass = System.Web.Security.Membership.GeneratePassword(10, 2);
            Console.WriteLine(pass);
            Clipboard.SetText(pass);
                        
        }
    }
}

2 コンパイル

powershellなどのスクリプトとは違って、
実行ファイルを作成するために、コンパイルが必要です。
あまりプログラミングしない人はコンパイルなど面倒そうで難しそうと思うかもしれません。
しかし、Windowsには標準でC#コンパイラが入っていますので、 特別なソフトをインストールせずとも簡単にコンパイルが可能です。

以下フォルダに、.netのバージョンごとのフォルダがあります。 C:\Windows\Microsoft.NET\Framework

一番新しいバージョンのフォルダを開きます。
色々ファイルが入っていますが、以下がコンパイラです。
csc.exe

コマンドプロンプトでそのフォルダを開き、

csc.exe <コンパイルしたいファイル名>

を実行し、コンパイルしたいファイルをコンパイルできます。

今回の場合だと、

csc.exe sample.cs

となります。

実行すると、コマンドプロンプトのカレントディレクトリにsample.exeが作成されます。

このexeを実行すると、クリップボードにランダムpasswordが生成されています。
Ctrl + Vでメモ帳などに貼り付けて試してみてください。

3 パス登録

いつでも簡単に実行できるように、exeにパスを通して実行できるようにしておきます。
cフォルダ直下にpathフォルダを作成。
windows環境変数のPathに上記フォルダを登録してください。
sample.exeを適当な場所に配置してください。例えば、cフォルダ直下のscriptフォルダに置きます。
上記pathフォルダに、scriptフォルダに置いたsample.exeのショートカットを貼り付けます。
ショートカットのファイル名を変更し、genpassとします。

4 実行

Windwosボタン + Rでファイル名を指定して実行を表示させ、
genpassと入力しエンターを押します。 sample.exeが実行され、生成されたパスワードがクリップボードに格納されます。