gpt4 book ai didi

c# - 如何在 ClickOnce 场景中设置 AppDomain FriendlyName?

转载 作者:太空狗 更新时间:2023-10-29 21:55:32 25 4
gpt4 key购买 nike

当使用 ClickOnce 而不是 exe 名称部署应用程序时,FriendlyName 似乎设置为“DefaultDomain”。我想消除我的窗口与其他可能也是“DefaultDomain”的潜在 ClickOnce 应用程序之间的歧义。

说明:我们正在使用非托管调用,

[DllImport("user32.dll")]
public static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);

检索用户桌面周围窗口的类名,并需要确保我们以某种方式响应应用程序创建的窗口。当由 ClickOnce 部署时,我们的窗口不再将 exe 名称作为域,并且不会轻易与其他潜在的 ClickOnce 部署应用程序区分开来。

最佳答案

好问题。

我不能确定为什么会这样,但我相信应用程序的“托管”方式可能有所不同,因为启动应用程序的是“ClickOnce 应用程序部署支持库”。

但是,如果您一直希望使用 AppDomain.FriendlyName 来区分您的应用程序,那么也许您可以自己创建应用程序域并定义自己的友好名称。

另一个可以达到相同目的的想法是使用应用程序全名,如下所示:

private static string GetAppName()
{
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{

ApplicationDeployment curDeployment = ApplicationDeployment.CurrentDeployment;
string fullname = curDeployment.UpdatedApplicationFullName;
Match match = Regex.Match(fullname, "#.+/(?<app>.+).exe");

return match.Groups["app"].ToString();
}
return null;
}

我很快就创建了正则表达式,所以没有任何保证。这是一个解释命名约定的链接:http://blogs.msdn.com/b/shawnfa/archive/2004/06/30/170241.aspx

另一个想法是只使用反射来获取调用程序集的名称,但这在所有部分信任的环境中都不会很好地工作。

关于c# - 如何在 ClickOnce 场景中设置 AppDomain FriendlyName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6377225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com