經過一番詳盡的搜索,我終於找到了一種方法找到通過註冊表混淆的文件夾名稱。以下是一個簡單的方法:
private static Tuple<string, string> GetClickonceDirectories()
{
var appToken = (string) Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment\SideBySide\2.0", "ComponentStore_RandomString", null);
var dataToken = (string) Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment\SideBySide\2.0\StateManager", "StateStore_RandomString", null);
if (string.IsNullOrWhiteSpace(appToken) || string.IsNullOrWhiteSpace(dataToken))
{
throw new Exception("Unable to find clickonce directories.");
}
var appDir =
[email protected]"{appToken.Substring(0, 8)}.{appToken.Substring(8, 3)}\{appToken.Substring(11, 8)}.{appToken.Substring(19, 3)}";
var dataDir =
[email protected]"Data\{dataToken.Substring(0, 8)}.{dataToken.Substring(8, 3)}\{dataToken.Substring(11, 8)}.{dataToken.Substring(19, 3)}";
var rootPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
rootPath = Path.Combine(rootPath, "Apps", "2.0");
return new Tuple<string, string>(Path.Combine(rootPath, appDir), Path.Combine(rootPath, dataDir));
}
我無法訪問服務器上的C:\ Documents&Settings文件夾,這意味着我無權訪問應用程序創建的文件。我從某個文件夾運行應用程序。這是該應用發佈的文件夾。我如何獲得該文件夾的路徑? – 2010-03-01 21:20:32
哦,你想要部署網址。對不起,我一點都沒有。您是否試圖從ClickOnce應用程序或外部應用程序中獲取它? – RobinDotNet 2010-03-10 09:52:12