ClickOnce で使用されるパスであるため、そのパスを取得しています。ClickOnce アプリケーションは、それらをインストールしたユーザーのプロファイルの下にインストールされます。
編集 :
方法 1:
アプリケーションがインストールされたパスを取得する方法は次のとおりです (アプリケーションがインストールされている場合にのみ機能します) (この部分は@codeConcussionによって記述されています)。
// productName is name you assigned to your app in the
// Project properties -> Publish -> Publish Settings
public static string GetInstalledFromDir(string productName)
{
using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall"))
{
if (key != null)
{
var appKey = key.GetSubKeyNames().FirstOrDefault(x => GetValue(key, x, "DisplayName") == productName);
return appKey == null ? null : GetValue(key, appKey, "UrlUpdateInfo");
}
}
return null;
}
private static string GetValue(RegistryKey key, string app, string value)
{
using (var subKey = key.OpenSubKey(app))
{
if (subKey == null || !subKey.GetValueNames().Contains(value))
{
return null;
}
return subKey.GetValue(value).ToString();
}
}
使用方法は次のとおりです。
Uri uri = new Uri(GetInstalledFromDir("ProductName"));
MessageBox.Show(Path.GetDirectoryName(HttpUtility.UrlDecode(uri.AbsolutePath)));
方法 2 :
あなたも試すことができます
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri
しかし、これはアプリがインターネットからインストールされた場合にのみ機能すると思います