ASP.NETを32ビット版から64ビット版に切り替える方法

IISでアプリケーションプールの.Net Framework バージョンを v2.0、32 ビット アプリケーションの有効化をFalseに設定している時にイベントログにエラーが出力されることがある。

f:id:la85kk_69:20160817012837j:plain

f:id:la85kk_69:20160817012842j:plain

何かの拍子に32ビットモードに設定されたらしい。

64ビットモードにする場合は以下のコマンドを実行する。

 

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i

 

https://support.microsoft.com/ja-jp/kb/894435

DataRow配列をDataTableに変換するには

DataTable.Selectメソッドで取得したDataRow配列をDataTableに変換するにはCopyToDataTableメソッドを使用する。

使用するためにはSystem.Data.DataSetExtensionsの参照設定が必要。

 

Module Module1
 
    Sub Main()
        Dim dt As New DataTable
 
        Dim dc() As DataColumn = {New DataColumn("ID"GetType(Integer)),
                                  New DataColumn("Value"GetType(String))}
 
        dt.Columns.Addrange(dc)
 
        dt.Rows.Add({1, "あ"})
        dt.Rows.Add({2, "い"})
        dt.Rows.Add({3, "う"})
 
        Dim dr() As DataRow = dt.Select("ID > 1")
        Dim dtSelect As DataTable = dr.CopyToDataTable
 
        For i = 0 To dtSelect.Rows.Count - 1
            Console.WriteLine(dtSelect.Rows(i).Item("Value").ToString)
        Next
    End Sub
 
End Module

 

IEを新しいセッションで起動する

IE起動時にコマンドライン引数で「 -noframemerging」オプションを追加すると新しいセッションで起動することができる。

"C:\Program Files\Internet Explorer\iexplore.exe" -noframemerging

64ビット版Windows 7にIE10を入れたらノータッチデプロイメントが動かなくなった

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main

または

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main

のTabProcGrowthが「0」に設定されているとLoosely-Coupled IE(LCIE)機能が無効となり、フレームプロセスのみで動作するようになるため、64ビットのIE10として動作する。

そのため、32ビットで動作するアドオン(今回の場合はノータッチデプロイメント)が動作しなくなってしまう。

TabProcGrowthを削除、または「0」以外に設定することでフレームプロセスの子プロセスに32ビットのIEが作成されるようになり、ノータッチデプロイメントが動作するようになった。

 

http://blogs.technet.com/b/jpieblog/archive/2013/11/01/3607504.aspx

 

読み取り専用ファイルを編集メッセージを復活させる方法

Visual Studioで読み取り専用ファイルの編集を行おうとすると以前は

f:id:la85kk_69:20160114170132p:plain

こんなメッセージが表示されていたが、何かの拍子で「今後このダイアログ ボックスを表示しない」にチェックを付けてしまったせいか、いちいちファイルの読み取り専用を外さないと編集出来なくなってしまった。

 

以下のレジストリキーを「0」に設定することでこのメッセージを復活させることが出来る。(XX.XはVisual Studioのバージョンによって変更する)

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\XX.X\SourceControl

数値をn進数に変換する

36進数に変換する場合は第2引数に36を指定する。

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox2.Text = RadixConvert(CULng(TextBox1.Text), 36)
    End Sub

    ''' <summary>
    ''' n進数の数値文字列に変換
    ''' </summary>
    ''' <param name="l">数値</param>
    ''' <param name="radix">基数</param>
    ''' <returns>数値文字列</returns>
    ''' <remarks>マイナス値は考慮しない</remarks>
    Private Function RadixConvert(ByVal l As ULong, radix As Int32) As String
        Dim remainder As Int32 = 0
        Dim work As Decimal = 0
        Dim result As New StringBuilder

        work = CDec(l)

        While work > 0
            remainder = CInt(work Mod radix)
            result.Insert(0, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring(remainder, 1))
            work = Math.Floor(work / radix)
        End While

        Return result.ToString
    End Function

End Class

エクスプローラーの初期フォルダの変更方法

初期設定だとライブラリが表示されるが、これをコンピューターにする方法。

 

  1. エクスプローラーのショートカットのプロパティを開く。
  2. リンク先が「%windir%\explorer.exe」となっているので「%windir%\explorer.exe /e,」に変更する。

 

別のフォルダに設定したい場合は「/e,」の後にフォルダパスを指定する。

Program Filesフォルダだとしたら、「%windir%\explorer.exe /e, C:\Program Files」