Category Archives: Windows

simple menu

簡単なWin32メニューのポップアップ

オーナードローを有効にしてメッセージを処理する

ソースコード

回復パーティションが2つある

Windowsをアップグレードすると回復パーティションが新たにつくられることがあるそうだ。古い回復パーティションはもう必要ないため削除してもいいらしい

注意:以下の作業はシステムが壊れる可能性があるので自己責任でお願いします。

今使ってる回復パーティションを見つける

管理者権限でコマンドプロンプトを起動しreagentc /infoを実行。

ここから今使ってる回復パーティションはharddisk0\partition3であることがわかる。

回復パーティションを削除する

削除にはDISKPARTを使う。管理者権限でコマンドプロンプトを起動して以下のように行う。

今使っている回復パーティションは3だったのでいらないはずの4を削除した。ディスクの管理でみると以下のようになっている。

あとはこの空いた領域をCドライブと合体させたいので、AOMEI Partition Assistantを使って以下のように行った。

ここで確認を押してツールバーの「適用」を押すと処理が始まる。

完了後の「ディスクの管理」の状態

タスクバー

下固定。いつもは上に配置して使っているので慣れるまで大変。

クイックローンチがない

クイックローンチ(C:\Users\User\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch)にショートカットをたくさんおいて使っていたのでこれがなくなると大変になる。

常にグルーピング?

グルーピングしたくない

IE

IEがないが、IEのコントロールはあるようなのでIEをつかった既存のアプリは動く。バージョンは以下。新しくなっているかは不明。ちなみにIEを起動するとEdgeが起動する。

デスクトップの右クリック

デスクトップの右クリックメニューが変わった。

いままでのメニューは「Show more options」で表示できる。

結論

とくに嬉しいことはなかった。というか使いづらい。さらにモバイルに近づけようとしているようだ。バージョンが上がるごとにWindowsがつかいずらくなっている。

グループポリシーエラー このコンピュータのグループポリシーオブジェクトを開くことができませんでした。

gpedit.mscを開くと以下のようなエラーが出る。

グループポリシー エラー

グループポリシーの設定ファイルが壊れているとこのエラーがでるようだ。

設定ファイルの初期化

フォルダ C:\Windows\System32\GroupPolicy\Machine をリネームすると次回起動時にまた作られる。C:\Windows\System32\GroupPolicyは隠しファイルになっているので、エクスプローラーで隠し属性ファイルも表示するようにする。

エクスプローラーで隠し属性ファイル表示

C:\Windows\System32\GroupPolicy\Machineをリネーム

Windowsのコマンド引数でのダブルクオート

コマンドプロンプトでコマンド(アプリ)を引数付きで起動したとき、引数のダブルクオートがどう解釈されるかの実験

通常(ダブルクオートなし)

スペースなしの文字列をダブルクオート

ダブルクオートで囲ってもプログラム内では現れない。(mainのargvの話)

スペースありの文字列をダブルクオート

ダブルクオートで囲むと1つの引数として扱われる

スペースなしの文字列をシングルクオート

シングルクォートはダブルクオートとは違い引数に現れる。Windowsではシングルクォートは特別な文字列ではないようだ。

スペースありの文字列をシングルクオート

シングルクォートは特別な文字でないことがわかる。

ではプログラム内でダブルクオート文字列、例えば“abc”を受け取りたい場合はどうしたらいいだろうか。結論から言うと3つのダブルクオートでabcを囲めばいい。

3つのダブルクオートは以下のように解釈される。

  1. 開始ダブルクオート
  2. 終了ダブルクオート
  3. 終了ダブルクオート直後のダブルクオートは通常文字として扱われるダブルクオート

あるいは2つのダブルクオートで1つのダブルクオートと解釈される。
この形式はCランタイムとWin32APIのCommandLineToArgvWで扱い方が違うようなので、以下の場合には使えない。

プログラム内でabc=”xyz = 123″を受け取りたい場合。

\でエスケープできる。

引数を表示するアプリ

引数を解釈して表示してくれるアプリ、開発のときの確認用。あるいは長い引数をとるアプリのときプログラム内部でどう受け取られるかの確認用。CRTとCommandLineToArgvWと独自実装で表示する。

https://github.com/ambiesoft/argCheck/releases

グループポリシーエディターが起動しなくなったのを直す

現象

直し方

エクスプローラーで、C:\Windows\System32\GroupPolicyを開く。このフォルダは隠しフォルダになっているので、「表示」メニューから隠しファイルを表示するオプションを有効にするか、アドレスバーに直接入力する。

このフォルダの中にある、MachineMachine.oldにリネームする。

Windows10で共有フォルダにゲストアクセスする

共有元(Windows10)の設定

WindowsXPからもアクセスする

Windowsの機能のインストールで、SMB1.0を有効にする。
[WIN]+Rで実行ダイアログを表示し、appwiz.cplと入力し、Windowsの機能からSMB1.0をインストール。

ゲストアカウントを有効にしてリモート接続を許可する

[WIN]+Rで実行ダイアログを表示し、secpol.mscと入力し、Local Policies => User Rights Assignment => Deny access to this computer from the networkからGuestを削除する。

続いて、Local Policies => Security Options => Accounts: Guest account statusでゲストアカウントを有効にする。

wchar_tとchar16_t

char

C言語の最初のキャラクタータイプ。1バイト。ASCIIやISO-8859に使う。UTF8やShiftJISなどでも使う。Windowsの場合は通常マルチバイト文字と呼ばれるシステムの言語設定を反映した各国で異なる文字列になる。日本語のWindowsではShiftJISが入る。しかし今ではWindowsでは通常wchar_tを使いcharは使わない。Linuxでは通常UTF8を使うのでcharにはUTF8が入る。

wchar_t

次にできたキャラクタータイプ。サイズは実装依存。Windowsでは2バイト、Linuxでは4バイトになるので注意。何が入っているかも実装依存。WindowsではUTF16-LE。Linuxでは通常使用しないが、多分UTF32-LEが入っている。エンディアンはCPU依存と思われる。

char16_t, char32_t

2バイトと4バイトのキャラクタータイプ。何が入るかは実装依存。

リテラル

リテラルを表すには文字列の前に1~2文字の記号をつける。

標準ライブラリの文字列型

基本的にはbasic_stringなので、これに文字型を渡して
typedefしている。

標準入出力

string用のcoutとwstring用のwcout以外は定義されていないようだ。

Windowsのchar16_t

Windowsではwchar_tchar16_tはともに2バイトなのでキャストできるのだろう。

参考:実装ごとのサイズ

wchar_tのサイズがWindowsとLinuxで違う。