Windows」カテゴリーアーカイブ

VAIO Pro 13 を Windows 8.1 Pro でクリーンインストールしてみた

どうもみむらです。

なんだかんだ、愛用の VAIO Z さんが不慮の事故に巻き込まれてしまいまして、
お財布から何とか諭吉さんを出して VAIO Pro さんを購入しました。

・・・トラブル発生時用に一定額持っていたのと、
カメラを買おうかなと思って少し貯めていた分がこれで見事にすっ飛びました。
・・・うーん。

さてさて。

VAIO のみならず、メーカー製の PC というのはなぜかいろいろなソフトが付いてくるもんで。
もちろん、それを使う人には良いのですが私の場合は削除したいもんで、
加えてリカバリ後にアンインストールしてもレジストリやどこかのフォルダに残るってんで
出来ることならインストールから阻止したいもの。

・・ってことで、がんばってみました。

882378_741957522523517_353995434965807100_o

結果としてはこのような感じで、
良い感じに最低限のものだけインストールすることに成功しました。

何となくインストーラーの雰囲気から、
VAIO Z や その他の 2010 年以降ぐらいの VAIO であればこの手法が適用できそうな雰囲気ですが
環境が無いので試していません・・。

 

・・とりあえず自分のメモを兼ねて、やり方を。

また、試す場合は事前にリカバリディスクを作成しておいてください。

・・開始した後で戻そうと思って、リカバリメディアが無い場合でも対応できません。。

 

注:
ここで紹介する手順によって発生した損害や問題等に関しては一切責任を負いません。
また、本記事について Sony 側から指示を受けた場合については即刻削除するものとします。

本記事はリスクを負うことが出来、また高度な操作が行える人を対象としています。
また VAIO 関連ファイルについては要求があっても、お渡しすることは出来ません。
ご了承ください。

 

続きを読む

C# で ini ファイルの内容を任意のクラスに格納するコードを書いてみた。

どうもみむらです。

C# で ini ファイルを操作するとなると、
よくあるのが GetPrivateProfileString あたりを叩いて取得することになります。

でもその場合、いちいち要素を指定して取得しなければならず、
特に複数のキー(フィールド)がある場合に複数回コードを書くのも面倒です。

特に ini ファイルの項目が多くて、こんな状態になった日には・・。

image

 

・・ということで、 Reflection を使用して
この辺をすごく楽に出来るような感じでコードを書いてみました。

 

コード:

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

public static class Ini
{
    [DllImport("KERNEL32.DLL")]
    public static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName);

    [DllImport("KERNEL32.DLL")]
    public static extern uint GetPrivateProfileInt(string lpAppName, string lpKeyName, int nDefault, string lpFileName);

    [DllImport("KERNEL32.DLL")]
    public static extern uint WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);

    public static T Read<T>(string section, string filepath)
    {
        T ret = (T)Activator.CreateInstance(typeof(T));

        foreach (var n in typeof(T).GetFields())
        {
            if (n.FieldType == typeof(int))
            {
                n.SetValue(ret, (int)GetPrivateProfileInt(section, n.Name, 0, Path.GetFullPath(filepath)));
            }
            else if (n.FieldType == typeof(uint))
            {
                n.SetValue(ret, GetPrivateProfileInt(section, n.Name, 0, Path.GetFullPath(filepath)));
            }
            else
            {
                var sb = new StringBuilder(1024);
                GetPrivateProfileString(section, n.Name, "", sb, (uint)sb.Capacity, Path.GetFullPath(filepath));
                n.SetValue(ret, sb.ToString());
            }
        };

        return ret;
    }

    public static void Write<T>(string secion, T data, string filepath)
    {
        foreach (var n in typeof(T).GetFields())
        {
            WritePrivateProfileString(secion, n.Name, n.GetValue(data).ToString(), Path.GetFullPath(filepath));
        };
    }
}

 

使い方:

ini ファイルの読み取りたいセクションに合わせたクラスを用意します。

    public class Human
    {
        public string name;
        public int age;
    }

でもって次のような ini ファイルを用意して

[01]
name=TARO
age=20

あとはこんな風に呼び出します。

        static void Main(string[] args)
        {
            var h = Ini.Read<Human>("01", "DATA.INI");

            h.age = 15;
            h.name = "JIRO";
            Ini.Write("02", h, "DATA.INI");
        }

 

実行しますと、

image

こんな感じでデータが読み出されます。

でもって、 ini ファイルは

[01]
name=TARO
age=20
[02]
name=JIRO
age=15

こんな感じに、ちゃんとセクション 02 が書き込まれます。


躓きそうなところ:

データを格納するクラスが、こういう感じに {get; set;} な状態になっている場合:

    public class Human
    {
        public string name { get; set; }
        public int age { get; set; }
    }

上記コード内の GetFields を GetProperties に換え、 FieldType を PropertyType に変えれば動作します。


・・そんなわけで、もし良ければ自己責任でご利用ください-。

ソフトウェアからタッチ入力を行う ( SendInput のタッチ版をする場合のメモ )

メモです。

http://msdn.microsoft.com/en-us/library/windows/desktop/hh802899(v=vs.85).aspx

入力を行う場合、

InjectTouchInput 関数
http://msdn.microsoft.com/en-us/library/windows/desktop/hh802881(v=vs.85).aspx

を用いて入力を行うようです。

 

また、こちらのサイトに非常にわかりやすいサンプルを見つけました。
http://www.naturalsoftware.jp/blog/8185

Hyper-V で ディスクの最適化をしても VHDX ファイルが縮まらない場合。

みむらです。何となくメモ。

image

Hyper-V において、こんな感じで仮想ハードディスクに対して最適化を行っても縮まらない場合。

 

1. 事前にゲストOS 上で 空き領域を 0-fill しておく。

2. PowerShell を起動して、 Users\Public\Documents\Hyper-V\Virtual hard disks に移動。

image

3. “Optimize-VHD [縮めたい vhdxファイル] –Mode Prezeroed” を実行。

image

ということで、終われば縮まります。

ATOK2013 でいきなり半角英数モードに切り替わってしまう場合。

どうもみむらです。
Win8 にしてから、こいつだけがどーも。

ってことで、 2ch で見つけたのでぺたり。

引用元 : http://anago.2ch.net/test/read.cgi/software/1358044631/61

61 :名無しさん@お腹いっぱい。:2013/01/17(木) 03:33:02.35 ID:um2ykaLB0

これもテンプレに入れるべきじゃね?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
アプリケーションによって入力モードが変化する不具合の解消方法
1. ATOKのメニューから「プロパティ(環境設定)」を起動。
2. 左側の「設定項目」の「入力補助」から「特殊」を選ぶ。
3. 右側の「設定一覧」から「「アプリケーションからのモード変更を無視する」にチェックを入れる。
4. 「OK」ボタンを押す。
原因:
アプリケーションには指定する入力モードが設定されている為。
他社はこれを臨機応変に対応しているのだが、
ATOKは律儀に守っているためこの不具合が発生するので、
設定モードで解除剃る必要がある。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

このへんいじるとどうやら直るっぽいので、ちょっと試してみる。