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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

インフラSEへの道~マジックパケットを送信してマシンを起動する~

Wake On LANを試してみようと以下の記事を書いたわけだが、PowerShellでマジックパケットを送信しようとしたところ、PowerShellのセキュリティや文字コードがややこしいと感じて、自 …

no image

iTextSharpによるPDFファイルのページ分割

iTextSharpはフリーのPDF関連コンポーネントであり、いろんなことができるのは知っていた。ドットNET、つまりC#かVB使いであれば、けっこう簡単にPDFを操ることができるのだが、あいにくおい …

PDFium第2弾はPDFを画像化するWindowsフォームアプリケーションなり

「PDFium ViewerによるPDFレンダリングがイケてる」では、最低限のWindowsフォームアプリケーションを作ったわけだが、その第2弾は普通の人(非プログラマー)でも使えるPDFの画像変換ア …

PDFアレコレをバージョンアップ

1年ぶりにPDFアレコレをバージョンアップ。変更点は以下の通り。 Ver2.00 2019/10/13 ・プレービューからのページ回転に対応。PDFiumのPDF編集能力は低いため、iTextShar …

PDFに捺印できるようにしたPDFアレコレを公開

半年ぶりにPDFアレコレをバージョンアップ。変更点は以下の通り。 Ver2.01 2020/3/15 ・プレビューからの捺印機能に対応。捺印用データはとりあえずpdfのみで配置点が固定。  ※そのうち …