windows - Cygwin sshセッションからqwinstaを適切に実行することは可能ですか?

windows ssh cygwin

Windows 7マシンでCygwinを実行していて、Cygwin sshサーバーを実行しています。 Linuxでは、実行したいシェルスクリプトがあります。

ssh myuser@mymachine "qwinsta | grep Active"


ログインしているユーザーを確認します。これはWindows Server 2008 R2マシンでは問題なく機能しましたが、Windows 7では問題があるようです。

Windows 7マシンでこれを試すと、次のようになります。

bash: qwinsta: command not found


さて、ここが奇妙さの始まりです...

Windows 7マシンに正常にログインし、WindowsエクスプローラーでC:\ Windows \ System32を見ると、qwinsta.exeが見つかります。 CMDセッションを開いてC:\ Windows \ System32でdirを実行すると、qwinsta.exeが表示されます。 Cygwinシェルを開き、/ cygdrive / c / Windows / System32でls qwinsta.exeを実行すると、次のようになります。

ls: cannot access qwinsta.exe: No such file or directory


Cygwinシェルからcmd /c dir C:\\\\Windows\\\\System32\\\\qwinsta.exeを実行すると、「ファイルが見つかりません」というメッセージが表示されます

qwinsta.exeをCygwinホームディレクトリにコピーすると、lsを使用してホームディレクトリに表示されます。 Cygwinシェルからqwinstaのこのローカルコピーを実行しようとすると、実行されますが、次の行も出力されます。

{Message(): LoadString failed, Error 15105, (0x00003B01)}


Windows 7のqwinstaはどうなっていますか?
答え
問題は、qwinsta.exeが実際にはC:\Windows\System32にないことです。それは実際に見つけられます

C:\Windows\winsxs\amd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35_6.XX.XXX.XXXX_none_XXXXXXXX\qwinsta.exe


上記のパス(または同じものへのソフトリンク)を使用すると、qwinsta.exeがどのマシンにも存在するのと同じように実行され、実行可能ファイルをホームディレクトリにコピーする必要はありません。

エラーメッセージ{Message(): LoadString failed, Error 15105, (0x00003B01)}は、Multilinugal User Interface(localization)システムが、実行中のプログラムのエラーメッセージローカリゼーション情報を見つけることができないことに関するものです(System Error Codesを参照)。この場合、cygwinシェルは、言語のロケールフォルダー(通常はqwinsta.exeまたはロケールが何であれ)でqwinsta.exe.muiを見つけるために必要な情報をC:\Windows\System32\en-USに提供しないようです。エクスプローラーはこのディレクトリにファイルを表示するため、このフォルダーを調べると誤解を招く可能性がありますが、ls /cygdrive/c/Windows/System32/en-USを実行してもqwinsta.exe.muiファイルはありません。これはNTFSの新しいリンク構造(mklinkコマンドを参照)に関係していると思いますが、問題のこの部分を修正する方法はまだわかりません。
関連記事

c# - Windowsログオフの遅延(XP、Vistaおよび7)

windows - C++ / W32-サウンドの録音、Direct ShowまたはWaveInOpen?

windows - libusb-win32:ドライバーフィルターの自動インストール

c# - ファイルのICopyHook.CopyCallbackまたはその代替はありますか?

windows - PowerShellを使用して、空のフォルダーのリストをあるボリュームから別のボリュームに移動する

windows - Windowsでユーザーを作成せずにパスワードが有効かどうかを確認することはできますか?

windows - 複数のクライアントデータベースをホストするためのVPS上のMicrosoft SQL Server-これは正しい方法ですか?

windows - バッチファイルによる特定のファイルサイズチェック

ruby - Windowsでのrmagickの問題

c++ - メッセージループが別のスレッドにあるときにウィンドウが閉じるまで待機する