ShellExecute.. properties
ファイルやフォルダの「プロパティ」ダイアログを表示したくなった.
以前調べた時,ShellExecute の lpOperation で指定すれば良いと思っていた.
Copilot に聞いてみると,次の様なコードが表示された.
{
LPCTSTR filePath = _T("E:/_backup_") ;
HINSTANCE hInstance = ::ShellExecute(NULL,_T("properties"),filePath,NULL,NULL,SW_SHOWNORMAL) ;
if (UINT64(hInstance) < 32) {
DWORD error = ::GetLastError() ;
tstring str = ::Error_FormatMessage(error) ;
std::tout << str << std::endl ;
}
}
{
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(SHELLEXECUTEINFO) ;
sei.lpVerb = _T("properties") ;
sei.lpFile = _T("E:/_backup_") ;
sei.nShow = SW_SHOWNORMAL ;
sei.fMask = SEE_MASK_INVOKEIDLIST ;
if (!::ShellExecuteEx(&sei)) {
DWORD error = ::GetLastError() ;
tstring str = ::Error_FormatMessage(error) ;
std::tout << str << std::endl ;
}
}
::ShellExecuteEx は表示できるが,::ShellExecute はエラーになる.
改めてドキュメントを見ると ::ShellExecute には “properties” がない.
C++&Win API 設定(Windows設定アプリ)を表示する
ファイルプロパティの表示
ShellExecute()とデフォルトブラウザの起動、拡張子の関連付け
“!This folder protects … “
簡単にバックアップをとるためのツールを作成中.
目的としては「バックアップと復元 (Windows 7)」の様なもので,robocopy によるバックアップのみ.
「ディレクトリ以下のコピー」ツールの内部的な部分を,用途を絞って用意できればと思っている.
次のコードで動作を確認していると,見慣れないフォルダがあった.
bool test_backup (const int csidl)
{
tstring fdst = _T("e:") ;
tstring path = ::SH_GetFolderPath(csidl) ;
std::tout << ::u64to0t(csidl,16,8) << _T("\t") << path << std::endl ;
{
if (!x_CopyCommand::CheckFolderDST(fdst.c_str())) {
fdst = ::Path_AddLastSP(fdst) + x_Copy_RootDST ;
}
x_CopyCommand bc_cmd ;
{
bc_cmd.SetFolderDST(fdst.c_str()) ;
bc_cmd.SetFolderSRC(path.c_str()) ;
// bc_cmd.Set_pause(true) ;
bc_cmd.Execute(SW_MAXIMIZE,true) ;
}
}
return true ;
}
C:\Users\Iwao\Desktop\!This folder protects against Ransomware. Just leave it here
検索すると問題ないとのこと.
検索する前からわかってはいたが,見つかった情報の内容が正しくないものがあった.
そのフォルダにある desktop.ini を開くとアイコンの指定があり,Cybereason となっている.
robocopyの良く使うオプションを用途から逆引き【Windows】
Robocopyでよく使用するオプションについてまとめてみた
Windows 11/10 の標準機能で自動システムバックアップ
【Windows 10 の基本】必要なフォルダーのバックアップを取るには?
Windows 10&11標準アプリ「Windows バックアップ」とは?:簡単に使えるバックアップ ツール
[データバックアップ編]残しておきたい8大データをピンポイント保存
VC でビルドできなくなった?
先日 VS 2022 のアップデートがあったので更新.
アップデート後のいつもの確認で,ツールのデバッグ版をビルドすると,いつまで経っても完了しない.
時々アップデートに失敗することがあるので,それかと思い,VC 2015 でビルドしても同様.
ここまでは 6/21 に確認.
VC 2005 でのビルドも完了しない.VC 6 では OK .
VC 2022 でダイアログベースで作成したスケルトンのままでも同様.
VC 2022 で,VB や C# のフォームアプリケーションはちゃんとビルドできる.
検索してもそれらしい情報には引っかからない.そうなると環境の問題か?
通常の MFC を使用したツール類は,今月に入ってからはビルドしていない.
.NET を利用した Web サーバは,インストールしている VC 2005 から 2022 すべてで 6/3 にビルドしている.
その後,VC 6 でのビルドは行っているが,VC 2022 などではビルドしていない?
先週までの影響しそうな変更などは次のようなもの.
NAS 環境に Docker とそのコンテナなどをインストール.
Windows Update 2025/06 .VS 2022 などのアップデート.
WSL はインストール済みだった.Docker Desktop のインストール.
Linux でもコンパイルできる様に,一部の共通のコードの修正.
VS 2022 のアップデート.
Web サーバのプロジェクトを VC 2005 と 2008 で再度ビルドすると,問題ない.VC 2010 はダメ.
VC 2005 で作成したダイアログベースのプロジェクトは 30 分程度かかるがビルドできた.
これらのことを考えると,ネットワークの問題か,インクルードの関係と思われる.
今まで長い間,インクルードの関係が次の様になっている.
今は使用していないパスの設定を整理して削除.
先日までの速度でビルドできるようになった.
mount 先への書き込み
引き続き,環境をどうするか?
現状 Win32 の AP の開発は,次の様に分けている.
Server_TS : 共通のコード(_.SRC 以下)
Server_DS : プロジェクトのソースなど(AppWizard の生成物).
Server_AS : ビルド結果(*.obj,*.exe).
Win11 PC : 一時的なテスト用プロジェクトなど.
今まで,共通のコードは mount して,Linux 固有の部分はそれぞれの環境に置いていた.
Server_DS のテスト環境に,Win10 PC の仮想マシンにあった Linux 環境のファイルをコピー.
次の様に mount .
mount -t cifs //192.168.1.xx/Public/Temp/linux/gcc /home/wao/test/gcc …
コンパイルするとエラーになる.
g++ c84.cpp -lglut -lGL -lGLU
コンパイル時に sudo をつければ良い.
ソースの編集は,他環境からのことが多いので,これで良しとするか?
さらに調べていると,よくわからない状態に.
sudo g++ src.cpp とするとエラーになってしまう.
PC の D ドライブにソースを入れた場合や,Linux 環境にコピーした場合などは OK .
この1ページで一通りわかる!Linuxのマウント(mount)について
マウントしたディレクトリを一般ユーザー権限にする
LinuxでNTFSファイルシステムのマウントでアクセス権限やファイルの所有者変更で悩まないために
NAS への mount
VirtualBox の Fedora では,次の様なコマンドで Win10 環境の _.src を参照していた.
sudo mount -t cifs -o username=user,password=pass //Z170S0/Public/…/_.SRC /mnt/_.src
今回 Win11 に VHD を移して,この辺りをどうするか調査中…
NAS への mount は,IP で指定しなければうまくいかない?
sudo mount -t cifs -o username=user,password=pass //192.168.1.xx/Public/ /mnt/public
WSL で入れた Fedora の環境も同じようにできる.
同様に Docker で入れた dorowu/ubuntu-desktop-lxde-vnc もやってみたが,こちらはうまくいかない.
mount: /mnt/public: permission denied.
mount: /mnt/public: cannot mount //192.168.1.xx/Public/ read-only.
Unable to apply new capability set.
それならばと思い Nautilus を入れてやってみたが,よくわからない.
これらをやっていて久しぶりに思い出したのが「Ctrl」+「Z」や,nautilus & .
コマンドの後ろに & を付加すると bg で動作する.
他に fg や jobs .
40 年近く前,アセンブルやストックフォームに印刷などで他の人に迷惑をかけた記憶がよみがえってきた.
【SMB / CIFS】LinuxでNASドライブをマウントする
LinuxでのNASへの自動マウントの方法@2024
UbuntuでNASのマウントと注意点
【Linux】【Windows】【CIFS】Windows の共有フォルダを Linux でマウント(mount)する手順
WindowsとLinuxでCIFSを使って簡単にファイル共有する方法
Synology NAS で OpenMP
最近 Docker に関して調べていて,幾つか気になったことを整理.
以前,OpenMP に関して調べているが今の時点で整理すると,
Synology NAS DS220+ では実行可能,TS-253D と AS5202T では不可.
DS220+ でも,ビルドはできない.他の環境でビルドしたものをコピーして実行.
何れの環境でも omp.h が存在しないためビルドはできない.
DS220+ では libgomp.so が存在するので動作するみたい.
TS-253D では「libgomp.so がない」となってしまう.
当然のことではあるが,Docker など仮想環境を利用すれば可能になる.
Windows で Docker
Win11 環境での続き…
先日から NAS 環境でいろいろとやったので,ある程度すんなりできた.
dorowu/ubuntu-desktop-lxde-vnc を検索してインストール.
「dorowu/ubuntu-des…」を選択してインストール.
「RUN」して「Optional settings」を「↓」.
「Host port」に「60080」などと入力し「Run」.
「60080:80」のリンクをクリックするとブラウザが開く.
gcc などをインストール.
GLUT を使用したコードをビルドして動作することを確認.
Windows 10 homeでWSL2 + DockerDesktopでDocker環境を構築する手順
Comprehensive Guide to dorowu/ubuntudesktoplxdevnc:latest
Windows 11 + Docker + Linux開発の落とし穴
AIロボット入門2024:LXDEデスクトップ環境の使い方
【Docker】公式イメージでUbuntuデスクトップ構築手順
Windows で Docker ?
Ubuntu と同様に wsl ––install fedora で Fedora をインストールできた(この環境では既に入っている ).
Microsoft Windows [Version 10.0.26100.4349]
(c) Microsoft Corporation. All rights reserved.
C:\Users\Iwao\AppData\Local\Temp>wsl --install fedora
ダウンロードしています: Fedora Linux 42
インストールしています: Fedora Linux 42
指定された名前のディストリビューションは既に存在します。--name を使用して別の名前を選択してください。
エラー コード: Wsl/InstallDistro/Service/RegisterDistro/ERROR_ALREADY_EXISTS
C:\Users\Iwao\AppData\Local\Temp>
gcc や glut などもインストール.
2014/09 の GLUT のコードを,2019/09 に a.out にしたものがあった.
Fedora から参照できるようにして,起動するとうまく動いた.
ここまで特に何も考えないでやっていたが,Fedora 42 は最近になって WSL から簡単に利用できるようになったみたい.
Fedora in Windows Subsystem for Linux
WSL に標準で対応した Fedora 42 がリリースされたので試してみる(WSL 2 編)
2025/06/13
同様に Ubuntu で GLUT 関係をやったが,freeglut3 がインストールできない.freeglut3-dev は可能.
wao@B660M:~$ sudo apt install freeglut3
[sudo] password for wao:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package freeglut3
wao@B660M:~$ sudo apt install freeglut3-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libegl-dev libgl-dev libgl1-mesa-dev libgles-dev libgles1 libglu1-mesa libglu1-mesa-dev libglut-dev libglut3.12
libglvnd-core-dev libglvnd-dev libglx-dev libice-dev libopengl-dev libopengl0 libpthread-stubs0-dev libsm-dev libx11-dev
libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxt-dev x11proto-dev xorg-sgml-doctools xtrans-dev
Suggested packages:
libice-doc libsm-doc libx11-doc libxcb-doc libxext-doc libxt-doc
The following NEW packages will be installed:
freeglut3-dev libegl-dev libgl-dev libgl1-mesa-dev libgles-dev libgles1 libglu1-mesa libglu1-mesa-dev libglut-dev
libglut3.12 libglvnd-core-dev libglvnd-dev libglx-dev libice-dev libopengl-dev libopengl0 libpthread-stubs0-dev libsm-dev
libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxt-dev x11proto-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 27 newly installed, 0 to remove and 3 not upgraded.
Need to get 2970 kB of archives.
After this operation, 12.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]
2019/09 の a.out は libglut.so.3 がないため実行できなかった.
GLUT を使用したコードは,Ubuntu 環境でビルドし直すことで起動できるようになった.
【初心者向け】WindowsにDockerをインストールする方法|Docker Desktop編
WSL(Windows Subsystem for Linux)向けにFedoraディストリビューション登場
How to install Fedora on WSL for Windows 10 and Windows 11
MicrosoftがWSLにFedora Linuxを追加、tarベース新アーキテクチャの採用でディストリビューション拡充へ
WSLg を使って Docker 上で GUI アプリを動かす(GPUサポート付き)
Synology NAS で Docker
QNAP NAS に入れた dorowu/ubuntu-desktop-lxde-vnc を Synology NAS に…
なかなか入り方がわからなかった.
「コンテナ」-「dorowu-ubuntu-desktop-lxde-vnc-1」-「全般」-「ポート」の値で開ける.
つまり,ブラウザで「http://192.168.1.22:32768」の様に入力すれば良い.
この画像は,デスクトップで起動した Firefox から Synology NAS の DSM を開いている.
Run Ubuntu Linux in Docker with Desktop Environment and VNC
ROS/ROS2のGUIをWebブラウザ経由でお手軽に試せるDockerfileを公開しました
dockerで手軽にLinuxデスクトップ環境を試せる!
【Docker】Ubuntuデスクトップ(dorowu/ubuntu-desktop-lxde-vnc)構築と接続手順
QNAP NAS で Docker
引き続き Docker の関係をいろいろと…
コンテナの「端末」を使用した操作はある程度わかったが,今度は GUI での操作.
Synology NAS でいろいろとやったが,よくわからず.そのため QNAP NAS で.
「Container Station」-「アプリテンプレート」で「Ubuntu Desktop with noVNC」を「デプロイ」.
「Container Station」-「コンテナ」で「ubuntu-desktop-lxde-vnc-1」の ↗ で起動できる.
これと同じようなことを Synology NAS で行ったが,デスクトップを開く方法までたどり着けなかった.
QNAP NASでDocker(Container Stationを使用)
QNAP NASでRedmineを動かす
QNAP NASのContainerSation(Docker)であとから環境変数を追加する
QNAPでDockerレジストリサーバの作成
TWSNMP FC を QNAP NAS の Docker で 動作させる
やっぱりDockerって便利 QNAP TS-453Aで数クリックで「Aipo」を動かす
QNAP の Docker を使ってみる
NAS で Docker …
以前から存在は知っていたが,あまり必要性を感じてはいなかった.
先日,ASUSTOR NAS の ADM の更新があり,Joomla! 3 などのサポートがなくなった.
それで,ちょっと調べてみることに…
保有している幾つかの NAS で Docker は使えるみたい.
が,検索して見つかるページはなかなか難しい.
いろいろと弄っていると…
Synology DSM デモサイトで「Container Manager」が動作する.
「Container Manager」を起動.
「レジストリ」を選択して「gcc」を検索,表示された「gcc」を「ダウンロード」.
「イメージ」で「gcc」を選択して「実行」.
「コンテナ」で「gcc-1」を選択して「端末を開く」.
Hello World を作成して g++ .
今度は「Ubuntu」を使用.「ダウンロード」して「実行」,「端末を開く」.
gcc などが入っていないので,次のコマンドを入力してインストール.
apt update
apt upgrade
apt install build-essential
apt install nano
コンパイルして,実行.
How to Use Docker & Container Manager on a Synology NAS
Synology NASのDockerパッケージでDocker Composeを使用する方法
Synology NAS でPortainerによるDockerコンテナ管理
NAS×Dockerでお手軽にLinux環境を作った話
QNAP の Container Station で Docker Compose を使ってみる
ASUSTOR NAS で Docker を使用する
Synology NAS で .NET console
先日から Synlogy NAS 上の .NET に関していろいろとやっている.
今まで Windows 上でコードを書いて run ,NAS 上にコピーして SSH 接続して実行していた.
これをもう少し簡単にできないかと…
NAS 上のコピー先をネットワークドライブとして割り当て.
そこをコマンドプロンプトで開いて,dotnet コマンドなどでいろいろと…
Dotnet Run App
コマンドラインでC#プログラミング
.NET Core で 実行ファイル(exe)を作成する方法
ショートカットからの起動で …
VS 2022 でインストーラを作成.
インストールした exe を起動する時はうまく動作する.
exe へのショートカットをダブルクリックして起動すると,インストーラが走ってしまう.
原因は「Application Folder」の「DefaultLocation」が正しくなかったため.
実行時に,指定したフォルダが存在しない場合も同様.
「DefaultLocation」を指定して,「AlwaysCreate」を「True」に.
Set_SasZ.zip
【.NET Core対応】Visual Studio 2019でインストーラを作成する方法
インストーラクラスでインストーラを作成する
Visual Studio Installer Projectsでインストーラを作成する
VisualStudio 2019 インストーラの作成方法
Visual Studioでインストーラを作成する
Web サーバ C++/CLI
以前 VC 2005 で作成した「簡易 Web サーバ」を VC 2022 に.
vc 2005 ~ 2022 でビルドできる一式を zip にしています.
https://itl.mish.work/i_Tools/Doc/blog/vc/W_svr.zip
https://jml.mish.work/index.php/i-tools/web-svr.html
Verify you are a human
先日から,スマートアプリコントロールを有効にした環境でもテストしている.
それで,ブロックされた exe などを次の所で提出し,対応している.
https://www.microsoft.com/en-us/wdsi/filesubmission
個人的なツール類をビルドして,msi を作成.
インストールしようとすると,ブロックされてしまう.
それでいつもの様に提出しようとしたが,昨日の夕方頃からファイルのアップロードができない.
何かの制限に引っかかった?
他のブラウザで試しても,特に変わらず.
2025/05/30 15:50
アップロードできるようになったことを確認.
ブロックも解除されてインストールできるようになった.
ASUSTOR NAS ADM 5.0.0.RH??
ADM の更新があったので,いつもの様に…
作業したのが夜中だったため,あまり考えないで「更新」してしまった.
前回の 4.0 に上げた時もそうだったが,そのままではいろいろと動作しなくなってしまった.
更新直後は,Web サーバすら起動できない状態だった.
これは「Nginx」に切り替えることで動作可能にはなった?
Joomla! 3 はサポートされなくなり「Joomla!-Docker」になった.
Joomla! は起動するようになったが,管理者として入る方法がわからず.
WordPress と VirtualBox は,最初の Web サーバと同様の Error 500 .
Linux Center は動作している.
2025/05/28
ADM 5.0.0.RHN2 への更新版があり,アップデート.
あまり変わらず?
2025/06/10
「App Central」の「インストール済み」を見ていて「X_VNCserver」をインストールしていたことを思い出した.
当時は使い方がわからず「OFF」になっていたがこれを「ON」に.
NAS の IP で開くと「ASUSTOR ポータル」が開いた.
その中に「VirtualBox」があり,そこから起動できた.
2025/06/30
ADM 5.0.0.RIN1 への更新版があり,アップデート.やはり,あまり変わらず?
Synology NAS で .NET web
Synology NAS で動かす前に,Win11 環境で…
dotnet new web
dotnet run
他の PC などから接続可能なように app.Urls.Add("http://0.0.0.0:3000"); を追加.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Urls.Add("http://0.0.0.0:3000");
app.MapGet("/", () => "Hello World!");
app.Run();
dotnet run として,動作を確認.
Program.cs などが入ったフォルダ以下を Synology NAS にコピー.
dotnet web1.dll で実行.
【#3】.NET Core MVC初心者チュートリアル はじめてのMVCアプリ
8 ways to set the URLs for an ASP.NET Core app
シンプルな ASP.NET Core Web API アプリケーションを作成する
ASP.NET Core入門 – Program.cs 解説【.NET 8】
VS 2022 Application Error
先日,VS 2022 の更新があった.
その影響なのかはわからないが,あるソリューションを開くと起動してしばらくして,終了してしまう様になった.
他のソリューションは問題ない.
イベントビューアではアプリケーションエラーとして記録されている.
アプリケーション:devenv.exe
フレームワークのバージョン:v4.0.30319
説明: ハンドルされない例外のため、プロセスが中止されました。
例外情報:例外コード c0000005、例外アドレス 00007FF88908246C
障害が発生しているアプリケーション名: devenv.exe、バージョン: 17.14.36109.1、タイム スタンプ: 0x681e2a3e
障害が発生したモジュール名: vcpkg.dll、 バージョン: 17.0.36109.1、タイム スタンプ: 0x6a2b7313
例外コード: 0xc0000005
フォールト オフセット: 0x000000000029246c
フォールト プロセス ID: 0x60C4
アプリケーションのフォールトの開始時刻: 0x1DBC9F9DD979C26
Faulting アプリケーション パス: C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.exe
Faulting モジュール パス: C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\VC\vcpackages\vcpkg.dll
Report Id: 0763b126-40a9-4482-ad33-d32e7ebe72a2
とりあえずメモ.
対象の .vs 以下を削除したが変わらず.
_FallBck や SymbolCache も削除したが,当然変わらず.
さらに絞って,ソリューションに FindB143.vcxproj を追加すると,数秒後終了してしまうことがわかった.
VS 2019 では FindB142.vcxproj を含むソリューションも問題ない.
2025/05/22 17.14.1 へのアップデートがあったが,変わらず.
2025/05/28 17.14.2 で対応された.
Synology NAS で .NET
Synology NAS の「パッケージ センター」を見ていたら,「.NET 9 runtime」に気づいた.
それで,どのようなことができるかを少し試してみた.
DS116 では dotnet コマンドがうまく動作せず,エラーになる.
dotnet: /lib/libc.so.6: version `GLIBC_2.34′ not found (required by dotnet)
DS220+ の libc.so.6 と比べると GLIBC_2.34 がない?
DS116 はあきらめて,DS220+ の方に「.NET 9 runtime」をインストール.
dotnet コマンドは動作するようになった.
.NET のサンプルで検索すると,.NET CLI 関係が見つかり,開発環境では次のコマンドで Hello, World! が表示できる.
dotnet new console
dotnet run
Win11 環境ではうまく動作することを確認.
Synology NAS で試すと .NET SDK がないためエラーとなる.
NAS に .NET SDK を入れる方法がわからなかったので,Win11 で作成したものをそのままコピー.
何とか起動できないものかと試すがよくわからず…
あきらめかけていたが,dotnet ~.dll で実行できる記述を見つけた.
dotnetコマンドを使って、Visual Studioを起動せずに簡単にプログラムを作成する
ubuntuでc#のサンプルアプリを動かすまでのメモ
Ubuntuリポジトリに取り込まれたパッケージ版.NETで、UbuntuでもC#プログラミングを始めよう!
C#(.NET Framework)で作ったコンソールアプリを .NET Core を使ってLinuxで動かしてみる!【前編】
dotnet new コマンドで使うテンプレートを作成する