potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

2021-07-01から1ヶ月間の記事一覧

C++20&WinAPI プロセスの昇格タイプ(管理者権限等)を確認する

プロセスの昇格タイプを確認するサンプルコードです。カレントプロセスの昇格タイプがTOKEN_ELEVATION_TYPE::TokenElevationTypeFullか確かめることで管理者権限を確認できます。 #include <optional> #define STRICT #define NOMINMAX #include <Windows.h> std::optional<TOKEN_ELEVATION_TYPE> GetPro</token_elevation_type></windows.h></optional>…

Python3 反復可能オブジェクトの正規表現と一致する部分を数える

Iterable(反復可能オブジェクト)の正規表現と一致する部分を数えるサンプルコードです。collections標準ライブラリのCounterクラスを使用しています。 import re from collections import Counter values = ("ab1111", "ab1112", "ac2111", "ac2112", "ad2…

Python3 反復可能オブジェクトから正規表現の一致部分が重複しない要素を1つずつ抜き出す

反復可能オブジェクト(Iterable)から正規表現の一致部分が重複しない要素を1つずつ抜き出すサンプルコードです。辞書型dictがキーと値のタプルで初期化でき、キーの重複する値を自動で上書きすることを利用しています。 import re #元から重複しないので…

C++20 MSVS 2019ではstd::span<T>のイテレーター初期化は不正な要素を参照しないように丸められる

C++

std::spanのMicrosoft Visual Studio Community 2019 Preview Version 16.11.0 Preview 3.0の現時点の最新環境における動作確認結果です。 std::span<T>をイテレーター(begin、end)で初期化するとき、参照範囲は不正な要素を参照しないように丸められます。例</t>…

C++20&WinAPI PEファイルのインポート情報を列挙する

PEファイル(Windowsの主なEXE、DLLファイル)のインポート情報を列挙するクラスのコードです。std::spanを多用していますが、所々に不正なメモリを読み込むバグの余地は残っていると思います。正常なPEファイルを確認する分には特に問題ありません。 修正履…

C++20&Win32 API スレッドまたはプロセストークンのユーザー情報SIDの文字列表記・ユーザー名・参照ドメイン名を取得する

スレッドまたはプロセスのトークンのユーザー情報SIDから文字列表記・ユーザー名・参照ドメイン名を取得するコードです。Win32 API関数のラッパー関数・クラスを定義していますが、サンプルコードなので名前空間で囲ったりはしていません。 #include <bit> #inclu</bit>…