PStart と PortableApps の狭間で揺れる修行

ドライブレターを気にしないでいい、ということで PStart はよさそうだ。PortableApps との関係はどうなるのだ? 排他的な関係なのか、相補的な関係なのか、連携させるべきなのか。
とりあえずやりたいことは、PuttyPortable と同じ設定を見る PAgent を起動したいだけなんだが。

結局

相対パスで実行できる exe を作って PuttyPortable.exe の隣に置いとけばいいんだろう、と Visual Studio 2008 Express Edition を起動し、VC++ で作ろうとして十数分で断念したのは秘密だ。win32api なんか知るか。素直に VB で作ればインテリセンス君がよろしくやってくれるんだろうけれど、変なプライドが邪魔をする。

追記 (2008-07-02)

『間をとって C# だ!』というアドバイスを受け、VC++ で作ってみた*1。ここにさらしとく。

#include "stdafx.h"
#include <windows.h>
#include <winbase.h>
#include <stdio.h>

#define BUFFER_LENGTH (512)

int _tmain(int argc, _TCHAR* argv[])
{
	DWORD i;
	WORD awBuffer[BUFFER_LENGTH];
	char p[BUFFER_LENGTH];
	i = GetCurrentDirectory(BUFFER_LENGTH, (LPWSTR)awBuffer);
	//OutputDebugString((LPWSTR)awBuffer);
	wcscat((LPWSTR)awBuffer, L"\\App\\putty\\pageant.exe");
	MessageBox(NULL, (LPWSTR)awBuffer, L"なぞ", MB_OK);
	HINSTANCE ret = ShellExecute(NULL, L"open", (LPWSTR)awBuffer, L"", NULL, SW_SHOW);
	return EXIT_SUCCESS;
}

はっきり言って、HINSTANCE だの LPWSTR だの wcscat だのがどういうものなのか、今は調べるつもりはない。今、そんなことを覚えている暇はないのだ。なので、MessageBox も消さないし、使っていない p も消さない。思ったように動いて使えるからいいのだ。

それにしても、しばらくの間うまく動かなかった理由が pageant.exe のところを pagent.exe にしていたから、とは。元から ageant だったのかな。今度調べよう。

追記 (2008-07-08)

やっぱりうまくできていなかった ...。整理してみよう。

PuTTY α:\PortableApps\PuTTYPortable\App\putty\putty.exe から起動 レジストリ
PuTTY ランチャから起動 USB 上のファイル
PAgent α:\PortableApps\PuTTYPortable\App\putty\pageant.exe から起動 レジストリ
PAgent ランチャ(作成した PageantPortable) から起動 レジストリ ×

ちゃんと PortableApps の作り方を見ればいいんだよねぇ。

*1:C# に食指は動いたが、今は寄り道しちゃいけないのだ。PagentPortable を作るのも寄り道なんだから…