3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

.Net開発

(.Net,ADSI)ActiveDirectory UserAccountControlのフラグの意味

(.Net,ADSI)UserAccountControlフラグからアカウント有効無効等を調べる方法の補足です。 MSDNの情報そのままですが、ActiveDirectory UserAccountControlのフラグと意味は下記のようです。 ┌────────────────┬─────┬────┬─────────────────────────────────…

(.Net,ADSI)User情報を格納するクラス

(.Net,ADSI)UserAccountControlフラグからアカウント有効無効等を調べる方法で使っているユーザアカウントのアカウントコントロールオプション情報を格納するクラスです。(C#3.0) まぁ、ただのbool型のプロパティをもったクラスっていうだけなんですが。。。…

(.Net,ADSI)Active Directory LastLogonTimestampを現在の時刻に変換

ActiveDirectoryからADSIを使って LastLogon , LastLogonTimestamp を取るときの注意点ですが、これらの値は 1601/01/01 00:00:00からのミリ秒を64ビットの値として持っているようです。 (WindowsAPIのFILETIME 構造体がこのような仕様みたいです。ちなみにU…

(.Net)SIDを文字列に変換

ActiveDirectoryから取得したオブジェクトの SID はバイト型配列になっています。 これを文字列(S-1-5-21-xxx-xxx...)に変換する方法です。 WindowsAPIにMSDN:ConvertSidToStringSidという関数があるようなので、これを使うと簡単に文字列形式にできるようで…

(.Net,ADSI)Active Directroyの情報を参照。

Windows標準のActiveDirectoryオブジェクト管理ツールはちょいと使いにくいので .Net でツールを作ることにしました。 .Net 標準のクラスライブラリで Active Directory の操作はできるようです。 DirectoryEntryクラスを使うと Active Directory に接続して…

(.Net,ADSI)Active Directroyの情報を参照サンプルソースのユーザクラス

(.Net)Active Directroyの情報を参照でのサンプルソースの補足です。 ユーザーアカウント情報を持つ User クラスです。(C#) public class User{ /// /// objectGUID キー値 /// public Guid dmObjectGUID{get;set;} /// /// objectSID /// public string dmO…

(.Net)デザイナでテーブルアダプタでGroupBy指定

DataSetのデザイナを使って、テーブルアダプタを書いたんですが、その時にGroupByのクエリをしたいときの方法です。 方法といっても、クエリの追加ウィザードから「単一の値を返すSELECT」を実行すればいいだけです。 そうすると、SELECT で指定したフィールド…

(.Net)ComboBoxでDataSourceオブジェクトの中にNullがあると...

ComboBoxの DataSource に List オブジェクトを指定したんですが、その List の中に Null があるとそこっから先が Item として追加されないみたいなんです。 例えば下記のような場合です。(C#) //ComboBoxNullテスト List lst = new List(); lst.Add(null); …

(.Net)C#で変数のアドレスが知りたい

昔VB.Netでやってたときに、一回インスタンスのアドレスを調査したい時があったんですが、結局その方法が無くて困った経験があります。 C#だと、デバッガ中に知るのは超簡単です。 ウォッチウィンドウに &変数名 と入れると、そのアドレスを知ることができ…

(.Net)Stringの仕様にやられた

事の発端は下記のように string 型のリストを匿名メソッドを使って処理しようとしたときです。 List<string> lst = new List<string>(); lst.Add("test1"); lst.Add("test2"); lst.Add("test3"); lst.ForEach(delegate(string s) { s = "hoge"; }); lst.ForEach(Console.Writ</string></string>…

(.Net)ファイルダイアログを使うとカレントパスが変わる

例えば、下記のようなコードがあったとします。(C#) File.WriteAllText("test.txt", "test"); OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == DialogResult.OK) { File.WriteAllText("test2.txt", "test"); } 普通に考えると、test.tx…

(.Net)文字列を暗号化する(3DES)

設定ファイルに保存する一部の文字列をちょいと暗号化したかったのでC#でやってみました。 .Netでは共通鍵暗号化方式として3DESが提供されているようで、TripleDESCryptoServiceProviderクラスを使うと簡単にできます。 //鍵 private const string CKEY = "1…

(.Net)バインドされたDataGridViewでソートするとセルの色が元に戻る

DataGridView.DataSource に DataTable をバインドした状態でソートを実行すると、セル値が特定の条件の時に任意でつけたセル背景色が元に戻ってしまう現象が発生しました。 そのセルの背景色を設定を行っているのが DataGridView.Validated イベントです。 …

(.Net)文字列を Base64 にエンコード、デコード

以前(VB.Net)MD5のハッシュからBase32エンコードを行う。 ではマイナーと思われる文字列の Base32 へのエンコードを実装してました。 今回はメジャーな Base64 へのエンコードです。 といっても、Base64はさすがメジャーだけあって .Net Framework でも Conv…

(.Net)三項演算子

C言語やって時から三項演算子自体は知ってましたが、当時可読性が悪くなると言われてたんでほとんど使ってませんでした。 しかし、三項演算子使ったほうがシンプルに読みやすい場合もあることを再発見しました。 例えば普通に if 文で書くとこうなります。 /…

(.Net)文字列から特定の文字列を検索

今まで知らなかったんですが、.Net Framework 2.0 以降からは文字列中から特定の文字列があるかどうかを bool で返すメソッド( String.Containsメソッド )があるようです。 使い方はこんな感じです。(C#) String str = "aaa"; bool res = str.Contains("aa")…

(.Net)HTMLエンコードされた文字を元に戻す

現在WEBページから情報を取得して表示するアプリを .Net で作っているんですが、HTTPエンコードされた文字列がそのまま表示されてしまいます。 (例えば これをHTMLデコードすれば、ちゃんとした文字として表示できるようです。 .Netにはそれが簡単にできるメ…

(.Net).Netで作成したアセンブリを共有フォルダで実行すると落ちる

(.Net Framework は 2.0です) 同じセグメント内の共有フォルダ内の .Net アプリケーションは問題なく動きました。 問題はルータを超えて共有フォルダにアクセスするときです。 (例えば192.168.0.xxxのPCが192.168.1.xxxの共有フォルダ上の .Net アプリを動か…

(.Net)DataGridViewからCSVエクスポート時に書式変更

DataGridViewで商品の売上情報を表示し、ボタン押下すると DataGridView.GetClipboardContent() を使ってCSVにエクスポートする仕組みを作っています。 DataGridViewの価格情報に関する列は DefaultCellStyle.Format = "c" と定義し、書式化された値で表示し…

(.Net)mdbを使うプログラムで Jet.OLEDB.4.0 の例外が出た

.Netでmdb(Access)をデータベースともつプログラムを作ってました。 このプログラムはターミナルサーバ(Windows Server 2003 x64)上で動かします。 開発用PC(XP x86)では問題なく動いてたので、実環境となるターミナルサーバ上で動かすとDB接続部分で下記の…

(PHP)HTML側がShift-JISだと SET NAMES sjis でのMySQLクエリはおかしくなる

PHPで Shift-JIS使うなってことは前から聞いてたんで、今まで使ってなかったんですが、今回は携帯向けってことで仕方なくHTML側でシフトJIS使うことになりました。 環境としては下記のような感じです。 MySQLPHPHTML(Smarty) UTF-8 UTF-8 Shift-JIS MySQLに…

ExcelでのCSV保存の仕様にやられた

CSVからデータ読み込んで DataGridView に表示する機能をアプリに作ってるんですが、それがどうもうまくいかないというクレームがあり調査すると、17行目移行にカンマがありませんでした。 調べたところ、ExcelでCSV保存するときに、17行目移行のブランクセ…

(ADO.Net)OLEDB経由でのMDBへの副問い合わせにパラメータクエリを使うとおかしくなることがある

OleDbCommand , OleDbDataAdapter オブジェクトを使って、SQLクエリを書いたんですが、どうも挙動がおかしいのです。 SQLには WHERE,FROM 句の中で副問い合わせ(サブクエリ)を多数使い、サブクエリ内で OleDbParameter を使いパラメータで抽出条件となる値を…

(.Net)DataGridViewでソートするとチェックボックス列の値が消える

DataGridView で DB から取得した DataTable をデータソースとしてバインドし、DataGridViewCheckBoxColumn 列を追加しました。 その状態で、何かチェックを付けてソートすると、チェックが全て消えるという現象が発生。 調べてみると、uedakoの日記:DataGri…

(.Net)Array.Sort() で比較条件をオリジナルなものにする

配列でソートするって手動でやるとかなりめんどくさいですが、.Net には Sort() メソッドが追加されており、簡単にソートができるようです。 数値型や文字列型の基本クラスを使った配列には何もしなくても、Array.Sort(配列名) でソートできます。 ただ、並…

Visual Studio セットアッププロジェクトのショートカットアイコンでハマる

Visual Studio セットアッププロジェクトでスターメニューにヘルプファイル(chm)へのショートカットを追加しようと思ったんですが、アイコンにハマりました。 何も設定しないと下記のようなアイコンになっちゃうんですよね。 アイコン設定するには、ショート…

(.Net)ActiveReportsでライセンス認証してるのに、トライアル版の文字が表示された

ちゃんとランセンス認証してるPCで ActiveReports を含んだソリューションをコンパイルしてもなぜかトライアル版の表示が。。。 ActiveReportsを使う部分は共通化したかったので、DLLプロジェクトとしており、EXE用プロジェクトから呼び出す形で構成していま…

(.Net)ListViewコントロールでフォーカスを失うと外すと選択解除されたようになる件

ListView コントロールで何か選択すると、選択したオブジェクトが反転表示(青色)します。 その時に、フォーカスを別のコントロールに移すと、ListView 内の選択していたオブジェクトの反転表示が解除されます。 しかし、実際は ListView.SelectedItems.Count…

(.Net)ProgressBarコントロールでバーの表示をずっとループさせる

よく終わりが見えない(現在の進捗が分からない)処理中に、プログレスバーの表示がずっとループしてるのを見ます。 あれは何か特殊なことしてるんだろうかと思ってましたが、.Net のProgressBarコントロールだと ProgressBar.Style プロパティで、ProgressBar…

(.Net)DataGridViewでセル値がNULL(DBNull)や空文字時に表示するテキストを変えたい

要件としては、DataGridView でセルの値が null,DBNull,空文字時に "値が入っていません" というメッセージを表示するというものです。 最初、 DOBON:DataGridViewでセルの値がnullやDBNull.Valueの時に表示するテキストを変更するで紹介されているように、D…