CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

特定サーバーにアクセスするためのIDと一致するものだけを許容するプログラムをつくるには(1)

投稿日:2020年11月8日 更新日:

Windowsで動作させるC#のプログラムの話で、特定サーバーにアクセスするためのIDと一致するものだけを許容するプログラムを作ろうとしていて、なかなか難航したのでその記録を残しておく。ようするに、IDとパスワードのうちのIDを取得したかったわけだけど、そのクライアントPCがドメイン参加なのかワークグループ参加なのかによってそのIDは変わってくるよねぇってことで、その分岐とWindows資格情報の取得というところが難問だったわけよ。

何はともあれ、そんなことをしているコード。

using CredentialManagement;

public static string GetIdOfDomain(string domainName)
{
	string id = "";
	ManagementObject computer_system = new ManagementObject(string.Format("Win32_ComputerSystem.Name='{0}'", Environment.MachineName));
	object objPartOfDomain = computer_system["PartOfDomain"];
	bool isDmn = (bool)objPartOfDomain;
	if(isDmn)
	{
		object objDomein = computer_system["Domain"];
		string dName = objDomein.ToString();
		if(string.Compare(domainName, dName, true) == 0)  // 指定したドメインに参加しているので、ユーザーネームをIDとして返す
			return System.Environment.UserName;
	}
	// ワークグループまたは別のドメインに参加しているので資格情報で確認する
	Credential cm = new Credential();
	cm.Target = domainName;
	cm.Type = CredentialType.DomainPassword;
	if (cm.Exists())
	{
		cm.Load();
		id = cm.Username;
	}
	return id;
}

指定した名前と一致するドメインに参加しているならユーザー名がIDになるし、そうでないなら資格情報から取得しましょってこと。まだ動作確認してないので、このまま動くとは思っていない。IDがドメイン名まで含んだ状態もあるだろうから、そんな考慮をすればよい。それから、例外処理やらnewしたクラスの後始末もちゃんとやらなければ。

なお、CredentialというクラスはCredentialManagementというパッケージで、Nugetから取得する必要がある。Windows資格情報へのアクセスは、Win32APIをアンマネージドで実現しなければいけないところを、マネージドにアクセスできるようにラップしたもの。C#で書くのにアンマネージドな処理を書くのはイヤなもんだから、こういうパッケージを作ってくれる人がいるというのはうれしいね。

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

PDFアレコレにページ挿入機能を追加

PDFアレコレのページ挿入機能とちょっとした不具合修正。 Ver2.08 2020/5/6 ・ページ挿入に対応した。指定したページの前に、指定したPDFファイルまたは空白ページを挿入できる。指定ページ …

no image

WinMergeのフィルタ

【2018/11/24追記】 この書きっぷりではあまりにもわかりずらいので、整理して追加情報を加えて新たな記事とした。 WinMegeのフィルタについて今すぐ知りたいならココを読め プログラマにとって …

zipcopy Ver1.02リリース

昨日に引き続きリビジョンアップを実施して、Ver1.02とした。 Ver1.02での変更点は以下の通り。 ・7zipを使わずに、DotNetZipの機能で圧縮・解凍を行えるようにした。 ・ファイル削除 …

PDFアレコレで捺印まわりのバグ修正

PDFアレコレをバージョンアップ。約3か月ぶり。 Ver3.02 2020/10/24 ・捺印などのPDF編集操作後にファイルを閉じて開いて、再編集すると以前編集していたPDFが復活していた。閉じると …

no image

いたちごっこ2

恐るべしクラッカー。万全と思われた対策も空しく、2回目のクラックが行われたところから話は始まります。 ●2度目のクラック 開発者は、某シリアル系クラックサイトで2度目の衝撃の遭遇しました。クラック結果 …