Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

Windows

T90Chi Windows Update その後

以前 Windows Update で,再起動を繰り返す状態になり そのままだった.
その後,幾つかの方法を試してみたが,BIOS 画面に入れずそのままとなっていた.
その時,音量の「-」と「電源ボタン」の同時長押しで起動すれば良い とあった.が,うまく入れないでいた.


久しぶりに調べてみると,USB キーボードを接続すれば良いとあったので試すとうまく BIOS 画面に入れた.
BIOS の起動は「F2」または「Delete」.「ESC」を押したときは「Please select boot device:」となる.
ESC を押して起動
F2 を押して起動
また,同じ様な状況になった人の記事も幾つかある.
ここまでは,昨日見つけた情報.


キーボード,マウス,Win10 インストール用 USB メモリ を接続して「ESC」を押して起動.
Win10 インストール用 USB メモリも接続して起動
インストールを進めて…
上の「アップグレード」は選択してもその先に進めない.「カスタム」を選択.
「インストールの種類」で「カスタム」を選択
4つのパーティションを削除.
パーティションを「削除」
「次へ」.
「次へ」を選択するとインストールが始まる
ライセンス認証は以前のものがそのまま引き継がれたみたい.
ライセンス認証
まだ設定は足りないが,何とか使えるようにはなった.


この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


ドライブ名からリモート名に

ネットワークドライブ名から UNC での表現に変換するコード.

#include	<clocale>
#include	"i_trace.hxx"

//#include	<winnetwk.h>
#pragma		comment	(lib,"mpr.lib")

tstring	W_get_remote_name	(LPCTSTR path_)
{
	tstring	dpath = path_ ;
	if (dpath.size() < 2)		{	return	dpath ;		}
	tstring	drive = dpath.substr(0,2) ;
	tstring	_path = dpath.substr(2) ;
	tstring	remote_path ;
	if (drive.length() == 2) {
		if (drive[1] == _T(':')) {
			u_16	d_t  = ::GetDriveType(drive.c_str()) ;
			if (d_t == DRIVE_REMOTE) {
				DWORD	buf_size = MAX_PATH ;
				tstring	remote_name ;
				remote_name.resize(buf_size+1) ;
				::WNetGetConnection(drive.c_str(),&remote_name[0],&buf_size) ;
				if (!remote_name.empty()) {
					remote_path = remote_name.c_str() + _path ;
					}
				}
			}
		}
	if (remote_path.empty())	{	return	dpath ;		}
	return	remote_path ;
	}

bool	Test	(void)
{
	for (long index=0 ; index<26 ; index++)	{
		tstring	drv  ;
				drv += TCHAR(_T('A')+index) ;
				drv += _T(":\\") ;
	//	if (index%2 == 0)
		{
			u_16	d_t  = ::GetDriveType(drv.c_str()) ;
			if (d_t == DRIVE_REMOTE) {
				drv += _T("*.*") ;
				v_tstring	files = ::EnumFiles(drv.c_str()) ;
				if (files.size() > 0) {
					drv = files[0] ;
					}
				}
			}
		drv += _T("                                      ") ;
		tstring	info = drv.substr(0,20) + _T("\t") + W_get_remote_name(drv.c_str()) ;
		{
			std::tout << info << std::endl ;
			}
		}
	return	true ;
	}

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		::Test() ;
		}
	return	0 ;
	}

WNetGetConnection と net use
net use 」とコマンド入力することで似た様なことを確認できる.


管理者で起動した PowerShell の Get-SmbConnection で SMB のバージョンを確認できる.
ファイル共有で使われている SMB のバージョンを見る
Get-SmbConnection

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


フォルダの更新日時の変更

今までファイルの更新日時の変更は使っていた.
https://www.vector.co.jp/soft/winnt/util/se500182.html
が,このツールでフォルダの更新日時を変更しようとするとできない.
コードは CFile::SetStatus を使用している.

	CFileStatus	fs ;
	CFile::GetStatus(file,fs) ;
	fs.m_mtime = newTime ;
	CFile::SetStatus(file,fs) ;

CFile::SetStatus の中(…\atlmfc\src\mfc\filest.cpp)を見ると ::SetFileTime を使用している.
また Linux などでも使える utime(…\crt\src\utime.c)も ::SetFileTime を使っている.
VC 6 で作成したものをデバッガで追いかけると ::CreateFile で 0xffffffff が返ってきている.


ASUSTOR NAS で試すと,特に問題なく変更できる.

Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ cat t_utime.cpp
#include        <clocale>

#include        "i_trace.hxx"
#include        "filetime.hxx"
#include        "itls_tmp.hxx"
#include        "c_which.hxx"

int     _tmain  (int argc,TCHAR* argv[])
{
        _tsetlocale(LC_ALL,_T("")) ;
        {
                tstring temp_path = ::Get_i_Tools_tmp_date() ;
                tstring fold_path = ::Path_AddLastSP(temp_path) + ::Now_Format(_T("%H%M%S")) ;
                tstring file_path = ::Path_AddLastSP(temp_path) + ::Now_Format(_T("%H%M%S")) + _T(".tmp") ;
                {
                        ::Folder_Create   (fold_path) ;
                        ::File_CreateEmpty(file_path) ;
                        }
                {
                        time_t  f_time = ::File_GetMTime(file_path.c_str()) ;
                                f_time-= 3600*24*7 ;
                        ::File_SetMTime(file_path.c_str(),f_time) ;
                        ::File_SetMTime(fold_path.c_str(),f_time) ;
                        }
                {
                        tstring cmd     = tstring(cmd_ls_la) + _T(" ") + ::QuotM_Add_Auto(temp_path) ;
                        _tsystem(cmd.c_str()) ;
                        }
                }
        return  0 ;
        }
Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ g++ t_utime.cpp -Wall
Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ ll
total 136
drwxrwxrwx    2 Iwao     users       4.0K Nov  7 16:24 ./
drwxrwxrwx    3 Iwao     users       4.0K Nov  7 15:32 ../
-rwxr-xr-x    1 Iwao     users     122.7K Nov  7 16:24 a.out*
-rwxrwxrwx    1 Iwao     users        838 Nov  7 16:22 t_utime.cpp*
Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ ./a.out
total 0
drwxr-xr-x    3 Iwao     users           80 Nov  7 16:24 .
drwxr-xr-x    3 Iwao     users           60 Nov  7 16:24 ..
drwxr-xr-x    2 Iwao     users           40 Oct 31 16:24 162451
-rw-------    1 Iwao     users            0 Oct 31 16:24 162451.tmp
Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $                                  

ASUSTOR NAS AS5202T 上で utime
今日はここまで.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


Win10 他の PC が表示されない

::SHBrowseForFolder を使用している所で,最近 PC 名でアクセスできないと問合せが…
SHBrowseForFolder
私自身はエクスプローラで直接入力していたので特に困ってはなかったが,ちょっと調べたのでメモ.


Win10 他の PC が表示されない」で検索すると幾つかの対応方法が見つかる.
Windows10 – ネットワーク上のコンピューターが表示されない時の対処法
Windows 10 にてネットワークコンピュータが表示されない場合
【解決】ネットワークでコンピューターや共有フォルダが表示されない【Windows10】
Windows 10のエクスプローラの[ネットワーク]にPCが表示されない場合の対処方法
SMBv1 は、Windows 10 バージョン1709、Windows Server バージョン1709以降のバージョンでは既定でインストールされません。
「SMB 1」を入れる様な記述も多いが,「WS-Discovery」を利用する方法で…
Win10 エクスプローラでコンピュータ名が見えない
動作を確認するために,タスクマネージャのサービスで「Function Discovery Resource Publication」を「開始」.
「Function Discovery Resource Publication」を「開始」
エクスプローラで見える様になる.
Win10 エクスプローラでコンピュータ名が見える様になる


保有している NAS で,QNAP TS-253D は表示されている.
Synology NAS DS116 は「Windowsネットワーク探索を有効化して…」のチェックで表示されるようになる.
Synology NAS DS218jをWindowsからネットワーク探索
Synology NAS Windows ネットワーク探索の有効化
その他の NAS では設定がわからず,直接入力で対応.
実際はネットワークドライブとして割り当てたり,ショートカットを作成したりしている.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


コンソール AP での define

コンソール AP で Windows.h や Afx.h を読み込んだ時のエラーに対応するために i_def_aw.hxx を用意.
_AFXDLL で判断しているため「MFC のスタティックライブラリを使用」には対応できない.

//	(VS8)\VC\AtlMFC\Include\AfxV_W32.h 
#ifdef			_MSC_VER
	#ifdef		_UNICODE
		#ifndef	 UNICODE
		#define	 UNICODE		// UNICODE is used by Windows headers
		#endif
	#endif
	#ifdef		 UNICODE
		#ifndef	_UNICODE
		#define	_UNICODE		// _UNICODE is used by C-runtime/MFC headers
		#endif
	#endif
#endif

#ifdef			 _MSC_VER
	#ifdef		 _AFXDLL
		#include <Afx.h>
	#else
		#include <Windows.h>
	#endif
#endif

#ifdef			_MFC_VER
	//		...
#endif

i_def_aw.hxx
i_def_aw.hxx 2020/09

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


robocopy でエラー 50 (0x00000032)

次の様なコマンドでファイルをバックアップしていると,

robocopy "\\DevX\Public\Documents\Develop"  "\\AS5202T\Public\Document\Develop"  /e /xo /xf *.bak 
...
                           6    \\DevX\Public\Documents\Develop\VC_Test\T_mem\T_PhysF\
                           8    \\DevX\Public\Documents\Develop\VC_Test\T_STL\
2020/09/11 10:03:08 エラー 50 (0x00000032) コピー先ディレクトリにアクセスしています \\AS5202T\Public\Document\Develop\VC_Test\T_STL\
この要求はサポートされていません。
30 秒間待機しています... 再試行しています...

robocopy エラー 50 0x00000032
何かの拍子に開いたままの状態になってしまったみたいで ASUSTOR NAS で「切断」することで対応.
ADM 「システム情報」-「オンラインユーザー」-「切断」
* 使用しているユーザを切断しない様に注意.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


FindExecutable と C2664

::FindExecutable の動作を確認しようと思い次の様なコードを書いた.

#include	<clocale>
#include	<iostream>

#include	<Windows.h>

#include	"i_define.hxx"
#include	"tstring.hxx"

tstring	Get_doc_exe	(LPCTSTR doc)
{
	tstring	exe_path ;
	exe_path.resize(MAX_PATH,0) ;
	::FindExecutable(doc,NULL,&exe_path[0]) ;
	return	exe_path.c_str() ;
	}

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		tstring	buf ;
		buf.resize(1000) ;
		{
			while (std::terr << _T("file ? =") , std::tin.getline(&buf[0],buf.size()))
			{
				tstring	str = buf.c_str() ;
				if	(str == _T("q"))	{	break ;		}
				else if (str == _T("Q"))	{	break ;		}
			//	str = ::QuotM_Del_All(str) ;
				if (str.empty())		{	continue ;	}
			//	if (::File_IsNothing(str))	{	continue ;	}
				std::tout << ::Get_doc_exe(str.c_str()) << std::endl ;
				}
			}
		}
	return	0 ;
	}

MBCS でビルドすると問題ないが,UNICODE にすると,

--------------------構成: get_exe - Win32 Release--------------------
コンパイル中...
get_exe.cpp
C:\Documents and Settings\All Users\Documents\Develop\VC_Test\PC_doc\get_exe\get_exe.cpp(37) : error C2664: 'class std::basic_istream<unsigned short,struct std::char_traits<unsigned short> > &__thiscall std::basic_istream<unsigned short,struct std::
char_traits<unsigned short> >::getline(unsigned short *,int)' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照)
        指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
C:\Documents and Settings\All Users\Documents\Develop\VC_Test\PC_doc\get_exe\get_exe.cpp(37) : fatal error C1903: 直前のエラーを修復できません; コンパイルを中止します。
cl.exe の実行エラー

get_exe.exe - エラー 2、警告 0

C2664 については ここ
Windows.h の include を i_define.hxx より後に.


::FindExecutable ではうまくない様な記述もあるが,今回の目的にはこれで良いかなと思う.
https://dobon.net/vb/dotnet/system/findassociatedexe.html
::FindExecutable を使用した動作テスト
https://itl.mydns.jp/…/get_exe_2020_09.zip


更にちょっと面白い動作があったので…

#include	"i_define.hxx"
#include	"tstring.hxx"
#include	<Windows.h>

#include	<clocale>
#include	<iostream>

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		tstring	buf ;
		buf.resize(1000) ;
		{
			while (std::terr << _T("file ? =") , std::tin.getline(&buf[0],buf.size()))
			{
				tstring	str = buf.c_str() ;
				if	(str == _T("q"))	{	break ;		}
				else if (str == _T("Q"))	{	break ;		}
				if (str.empty())		{	continue ;	}
				::ShellExecute(NULL,NULL,str.c_str(),NULL,NULL,SW_SHOWNORMAL) ;
				}
			}
		}
	return	0 ;
	}

関連付けされているドキュメントは,::ShellExecute で普通に開く.
そうでないドキュメントは,エクスプローラでクリックしたのと同じような動作.
NotePad や MSPaint などと入力すると,幾つかの exe は起動できる.
起動できないものもあり,その違いは不明.
https://itl.mydns.jp/…/se_doc_2020_09.zip

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


TS-253D 再セットアップ – 4

QTS で Virtualization Station をクリックすると,
Virtualization Station にようこそ
「終了」を押してしばらくすると,
QNAP VirtualizationStation 3
「VM の作成」.
予め iso は NAS にコピー済み.
QNAP  VS3  VM の作成
「OK」を押すと,
QNAP VM3  自動インストール
ここは「キャンセル」.
QNAP VS3  VM のリスト
「Win10x86」のアイコンを押すと,
QNAP  VS3  Win10x86  スタート
「スタート」を押すと,Windows のセットアップが始まる.
QNAP VS3  Win10 セットアップ
後は Windows のいつものインストール動作.
「ローカルアカウント」でインストール.
QNAP VS3  Win10 ローカルアカウント
「VM 情報」を選択して「ゲストツールCDを挿入する」.
QNAP VM3 ゲストツールCD の挿入
QNAP VM3  ゲストツールのインストール
QNAP VM3  ゲストツールのインストール VNC

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


FBX SDK 2020.1.1

FBX SDK 2020.1.1 があった.
FBX SDK 2020.1.1
今は時間が取れないので,ダウンロードとインストールまで.


いつもの様に,インクルードとライブラリのパスを変更 2020.1.1 に.
FBX SDK インクルードパスの設定
FBX SDK ライブラリパスの設定
2020.1 であったワーニング LNK4099 は出なくなった?

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


Python venv

次の所を参考にして…
VS CodeとFlaskによるWebアプリ開発「最初の一歩」
https://kazuhira-r.hatenablog.com/entry/2019/01/09/231800


cd %TMP% で移動し temp\test\ 以下に作成.
py -m venv temp\test
Win10 環境で py -m venv ...
Linux 環境では,~/Documents/tmp/test/
cd ~/Documents/tmp
python3 -m venv test
Ubuntu 環境で python3 -m venv ...


Win10   .\test\Scripts\activate
Ubuntu  source ./test/bin/activate

Flask の起動は,環境変数 FLASK_APP を設定して flask run らしい.
サンプルにある内容 を python3 sample.py との違いは?


2020/08/24
VS 2017 での仮想環境の作成は「ソリューション エクスプローラー」-「Python 環境」の「右クリック」にある.
VS 2017 Python 仮想環境を追加

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。