Windows Updateでできた一時ファイルが削除できない

外付けHDDに、Windows Updateでできた一時ファイルが削除できない時があります。

80e668b9952b3b29a9
a65f687ec916721e5686e1ffc06bec
a15f0db8c987de65f23d

といった感じの名前のフォルダが、たくさんできて、
削除できないので邪魔です。

削除しようとすると。
=====================================
update を削除できません。アクセスできません。

ディスクがいっぱいでないか、書込み禁止になっていないか、
またはファイルが使用中でないか確認してください。
=====================================
というエラーメッセージが出ます。

削除できる方法は

まずは、
スタートを右クリック→エクスプローラ→
ツール→フォルダオプション→表示タブ→
簡易ファイルの共有を使用するのチェックを外します。

これをやらないとフォルダのプロパティで
セキュリティタブが出ません。

フォルダを右クリック→セキュリティタブ→
詳細設定→所有者タブ→
Administratorsを選択→
サブコンテナとオブジェクトの所有権を置き換えるをチェック

すると、
ディレクトリ○○の内容を読み取るのに必要なアクセス許可がありません。
ディレクトリのアクセス許可を変更して、
フルコントロールで利用できるようにしますか?

というメッセージが出るのでOKを選択します。

複数のフォルダを選択して、一気に行うときは、
セキュリティタブを選択した時に、以下のメッセージが出ますが、
OKを選択して下さい。
↓↓↓
○○と○○,...のアクセス許可が異なるため表示できません。
選択したアイテムのアクセス許可を元に戻しますか?


これで、削除ができるようになります。

posted by VB.NET+MSDE+ActiveReports at 11:38 | Comment(1) | TrackBack(0) | ファイル・フォルダ

改行コードによらずファイルを1行ずつに分ける

ファイルを読み込んで一行ずつに分けるときに、
改行コードによらずにわける方法です。

改行コードがわかっているなら
System.String.Splitを使えばよいですが、
わからない場合は、System.IO.StringReaderを使います。

        Dim objFile As System.IO.StreamReader
        Dim objSR As System.IO.StringReader
        '読み込むファイルのパス
        Dim sFilePath As String
        'ファイルの内容
        Dim sContents As String
        '各行の文字列
        Dim sLine As String

       
        'ファイルを読み込む(Encodingはファイルにあわせる)
        objFile = New System.IO.StreamReader(sFilePath, System.Text.Encoding.GetEncoding(932))
        'ファイル内の文字列を全て取得する
        sContents = objFile.ReadToEnd
        'StringReaderで読み込む
        objSR = New System.IO.StringReader(sContents)
        '一行ずつ読み込む
        Do
            sLine = objSR.ReadLine()
            If sLine Is Nothing Then
                '空の行は
                'sLine = ""
                'なので、ここでは引っかからない
                Exit Do
            End If
        Loop

これで、ファイルの内容を一行ずつ最後まで読み取ることができます。
posted by VB.NET+MSDE+ActiveReports at 15:01 | Comment(0) | TrackBack(0) | ファイル・フォルダ

上書きしてしまったファイルを復活する方法


ファイルをうっかり上書きしてしまった場合、
ほとんどの場合、復元は望めません。
間違えて削除してしまった場合は、ゴミ箱に残っていたりします。
Shiftを押しながら削除してしまうと、ゴミ箱にも残りません。
しかし、削除の場合は、ハードディスク上にファイルが残っている可能性があります。
削除したものは、ファイルの位置を特定できなくなっているだけで、見えない部分に保存されている可能性があるからです。
削除してしまったファイルを復旧するフリーソフトは多数存在しています。

問題なのは、上書きしてしまった場合で、編集中に上書きしてしまったのなら、
ファイルを閉じる前なら、元に戻すボタンで多少はなんとかなります。
しかし、閉じてしまった場合は、どうしようもありません。
そんなときは、Google DeskTopがインストールしてあれば、
復元できる可能性があります。
残念ながら、Google DeskTopをインストールしていない場合は無理です。
次回のために、インストールしておきましょう。
何度も上書きしてしまったファイルでも、Google DeskTopなら、
1分くらいの差があれば、キャッシュに残っている可能性があります。



posted by VB.NET+MSDE+ActiveReports at 21:10 | Comment(0) | TrackBack(0) | ファイル・フォルダ

別アプリのテキストボックスに書き込む

別アプリのテキストボックスに順番に書き込み方法を説明します。

名前、住所などを順番に書き込むときに、
名前をコピーして、貼り付けて、
住所をコピーして、貼り付けて、...
と繰り返すのが面倒なときに役立ちます。

プログラムの流れは、

1、タイトルからウインドウを見つけ、アクティブにする。
2、文字を入力しながら、Tabキーでテキストボックスを移動する。

です。


    'タイトルからウインドウを探す関数
    <System.Runtime.InteropServices.DllImport( _
         "user32.dll", _
         CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
     Shared Function FindWindow( _
         ByVal lpClassName As String, _
         ByVal lpWindowName As String) As IntPtr
    End Function

    'ウインドウをアクティブにする関数
    <System.Runtime.InteropServices.DllImport("user32.dll")> _
    Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean
    End Function

    '一定時間待たせる関数
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    'ボタンを押すことにより、書き込みが始まることにします。
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim sTitle As String
        Dim hWnd As IntPtr

        sTitle = "TEST"

        hWnd = FindWindow(Nothing, sTitle)

        If Not hWnd.Equals(IntPtr.Zero) Then
            SetForegroundWindow(hWnd)
        End If

        'フォーカスがうまく移らないので
        'タイマーイベントの中で、書き込む
        Timer1.Start()

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Stop()

        '文字列を書き込む
        SendKeys.SendWait("こんにちは")
        'タブで移動させる前に
        '少し待たせたほうがうまくいきます。
        Sleep(50)
        'タブキーを押す
        SendKeys.SendWait("{Tab}")

        '移行繰り返して、入力する

    End Sub


posted by VB.NET+MSDE+ActiveReports at 17:22 | Comment(0) | TrackBack(0) | ファイル・フォルダ

プログラムのフォルダを取得

プログラムのフォルダを取得するには、

        Dim sAppFolder As String
        sAppFolder = System.IO.Directory.GetCurrentDirectory

sub Mainか
最初のフォームのロードイベントで
取得した方が無難です。

posted by VB.NET+MSDE+ActiveReports at 15:29 | Comment(0) | TrackBack(0) | ファイル・フォルダ