設定フォルダを開く
ひとつのディレクトリに複数の設定ファイルを置いて使い分けることもできるので、フォルダを開いただけでは設定ファイルを特定できないかもしれません。
案1で「フルパス」で「ファイル名まで」わかるようにするのがよいと思います。
ご意見ありがとうございます。 案1で進めます。
Visual Studio 2005 では TOKEN_ELEVATION 構造体が定義されていないようで、コンパイルできませんでした。
TOKEN_ELEVATION は vtwin.cpp の中で定義してしまえば良さそうですが、TOKEN_INFORMATION_CLASS は TokenOrigin までのものが winnt.h にすでに存在しているので、上書き定義出来ません。
また、OpenProcessToken() や GetTokenInformation() の最低サポート OS バージョンが高めだと思うので、古い OS では実行時にエラーが出るような気がします。
フィードバックありがとうございます。 VBやC#でも使えるやり方があるようなので、それを参考に、VS2005でもビルドできるようにしました。
Vista以前のOSに対しては、OSバージョンを見て、特権レベルの確認をしないようにしてあります。
ssh_known_hosts ファイルのパスを Tera Term 側から知りたいのですが、 どのやり方がスマートでしょうか? 案(1) TComVar 構造体のメンバーを追加し、TTSSHが起動されたときに、 TTSSH側でセットする。 案(2) TTXScpSendfile のようなエクスポート関数を作り、Tera Term 側から 起動し、パスを取得する。
VS2005
対応ありがとうございます。ADVAPI32.DLL の遅延読み込みが必要かと思いましたが、Windows95 からある DLL なので大丈夫でした。
theme
BGThemeFile の指定を見ると、ImageFile.INI/Scale.INI/Tile.INI は固定で指定しているのではなくワイルドカードになっています。
ssh_known_hosts
いま使われているファイルを特定するには、起動時の設定値のコピーではなく、現在の設定値を返す関数を使うのがよいと思います。
そういえば、ssh_known_hosts も 2 ファイル指定できませんでしたっけ?
INI | C:\Program Files\teraterm\TERATERM.INI | 「...」 |
CNF | C:\Program Files\teraterm\KEYBOARD.CNF | 「...」 |
cygterm.cfg | C:\Program Files\teraterm\cygterm.cfg | 「...」 |
theme | C:\Program Files\teraterm\theme\*.ini | 「...」 |
ssh_known_hosts | C:\Program Files\teraterm\ssh_known_hosts | 「...」 |
「...」 は、左の表示結果のフォルダ部のみを検出して開く、というのはどうでしょうか。
maya への返信
theme
BGThemeFile の指定を見ると、ImageFile.INI/Scale.INI/Tile.INI は固定で指定しているのではなくワイルドカードになっています。
デフォルトではそうなのですが、背景画像を指定した場合は"ImageFile.INI"に書き換わります。 Scale.INIとTile.INIは、常に同じディレクトリ配下にあるので、この2つは束ねてもよいかなと 考えましたが、再考の余地あり。
ssh_known_hosts
いま使われているファイルを特定するには、起動時の設定値のコピーではなく、現在の設定値を返す関数を使うのがよいと思います。
案2で検討します。
そういえば、ssh_known_hosts も 2 ファイル指定できませんでしたっけ?
それは認識なかったですが、いま確認してみると、確かに読み書きようと読み込み専用の 2つが指定できるようになっていますが、どうやって使い分けるのか。。
|| INI || C:\Program Files\teraterm\TERATERM.INI || 「...」 || || CNF || C:\Program Files\teraterm\KEYBOARD.CNF || 「...」 || || cygterm.cfg || C:\Program Files\teraterm\cygterm.cfg || 「...」 || || theme || C:\Program Files\teraterm\theme\*.ini || 「...」 || || ssh_known_hosts || C:\Program Files\teraterm\ssh_known_hosts || 「...」 || 「...」 は、左の表示結果のフォルダ部のみを検出して開く、というのはどうでしょうか。
そちらのほうがよいので、対応します。
デフォルトではそうなのですが、背景画像を指定した場合は"ImageFile.INI"に書き換わります。 Scale.INIとTile.INIは、常に同じディレクトリ配下にあるので、この2つは束ねてもよいかなと 考えましたが、再考の余地あり。
テーマファイルはユーザが自由に増減できるので「Scale.INIとTile.INI」の2つに固定できません。
さらに、あるファイルは VirtualStore 先にあって、別のファイルはそうではないという状況は存在します。難しいです。
TERATERM.INIファイルは Virtual Store 対象外
別名で保存すると VirtualStore のフォルダに保存されます。
ssh_known_hosts が複数指定できるようになっていることを、実装から確認しました。 TTSSHの設定ダイアログでは、最大2つ指定することができるようになっていますが、 実際にはセミコロンで区切れば、いくつでも指定できるようになっています。
KnownHostsFiles=ssh_known_hosts;ssh_known_hosts2;ssh_known_hosts3;ssh_known_hosts4;…
pvar->hosts_state.file_numでファイル数、pvar->hosts_state.file_namesでファイル名が 格納されているので、これらの情報を Tera Term 側から取得すればよさそうです。
「ts.EtermLookFeel.BGThemeFile を表示する」という案では、/path/to/theme/*.ini と表示することはできても、実在するファイル名でないと _access() が値を返さないので openVirtualStore() が正しく動作しない、という感じでしょうか。いまいちですね。
実在して中に何かあればどちらのフォルダも開く、というのは乱暴かなぁ。
一つずつ VirtualStore かどうか判定してプルダウンにするのもありかと思いましたが、それは表示幅が足りなくなりますね(今はエディットコントロールだから横にスクロールできる)。
#35205 へ続く
Details