実行可能ファイルは、32ビットプログラムの場合は"C:\Program Files"
または"C:\Program Files (x86)"
にインストールする必要があります。このインストールには管理者アクセスが必要です。
"c:\Users\UserName\AppData\Local"
ディレクトリ(または"c:\My Programs"
などの保護されていない他のディレクトリ)には、管理者権限なしでインストールできますが、これは通常ではありません。
ログファイルおよびその他の書き込み可能ファイルは、保護されたProgramFilesディレクトリに移動できません。それらは"c:\Users\UserName\AppData\Local"
にあるはずです。
ユーザーファイルはDocumentsディレクトリに存在する必要があります。
プログラムがユーザーにアンインストールを許可する必要があることを忘れないでください。アンインストール情報をレジストリキーに追加します。
"c:\\Program Files\\MyCompany\\MyAppName\\app.exe"
"c:\\Users\\UserName\\AppData\\Local\\MyCompany\\MyAppName\\app.exe"
HKEY_LOCAL_MACHINE //or use HKEY_CURRENT_USER if there is no admin access
"software\\microsoft\\windows\\currentversion\\uninstall\\My App Name"
"UninstallString = full-path-uninstall-command"
アンインストール文字列は、通常HKEY_LOCAL_MACHINE
に追加されますが、インストーラは管理者のアクセス権を持っていない場合、それはVistaまたは高い、使用中にこれらのフォルダを取得するにはHKEY_CURRENT_USER
に行くことができます:
std::wstring documents, appData, programFiles;
wchar_t *ptr;
if (S_OK == SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &ptr))
{
documents = ptr;
CoTaskMemFree(ptr);
}
if (S_OK == SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, NULL, &ptr))
{
appData = ptr;
CoTaskMemFree(ptr);
}
if (S_OK == SHGetKnownFolderPath(FOLDERID_ProgramFilesX86, 0, NULL, &ptr))
{
programFiles = ptr;
CoTaskMemFree(ptr);
}
乳母のプログラマーになる前に、保護することができるのはあなただけです。私はこれを時間の積極的な使用とは見なさず、Stack Overflowには広すぎます。 –
書き込めないファイルとフォルダがあります。私は書くための適切で標準的なフォルダを求めています。それについての乳母とは何ですか? –
標準の場所は、Users Documentsフォルダのどこかにあります。場所を取得するためのWindows APIがあります。 nannyパートは、誤ってファイルを削除しないようにしています。 – drescherjm