在C#表单应用程序中访问程序集信息GUID

在C#表单应用程序中访问程序集信息GUID,c#,guid,assemblyinfo,C#,Guid,Assemblyinfo,我想在我的Microsoft Visual C#2008 Express Edition项目的程序集信息中使用GUID,以便在用于验证应用程序只有一个实例正在运行的互斥体中使用。如何访问GUID?我只需要在Program.Main(…)函数中使用它。谢谢。MSDN上也提出了类似的问题: 以下是代码: public static T GetAssemblyAttribute<T>(Assembly assembly) where T : Attribute { if (ass

我想在我的Microsoft Visual C#2008 Express Edition项目的程序集信息中使用GUID,以便在用于验证应用程序只有一个实例正在运行的互斥体中使用。如何访问GUID?我只需要在
Program.Main(…)
函数中使用它。谢谢。

MSDN上也提出了类似的问题:

以下是代码:

public static T GetAssemblyAttribute<T>(Assembly assembly) where T : Attribute
{
    if (assembly == null) return null;

    object[] attributes = assembly.GetCustomAttributes(typeof(T), true);

    if (attributes == null) return null;
    if (attributes.Length == 0) return null;

    return (T)attributes[0];
}
public static T GetAssemblyAttribute(程序集),其中T:Attribute
{
if(assembly==null)返回null;
object[]attributes=assembly.GetCustomAttributes(typeof(T),true);
如果(attributes==null)返回null;
if(attributes.Length==0)返回null;
返回(T)属性[0];
}
某些值也可通过
组件
类型获得:

您可以调用static来获取当前正在执行的程序集

但是,除非具有与程序集关联的Guid,否则不能保证始终具有与程序集关联的Guid

如果确实有与程序集关联的Guid属性,则可以获取程序集实例并调用它,它将返回与程序集关联的Guid属性,然后可以查询Guid

但是,我建议使用应用程序入口点的完全限定类型名称作为名称。它具有更好的语义,并且符合汇编条件,因此具有相当多的唯一性


如果您担心其他人使用该值阻止您的应用程序运行,那么使用Guid并不是那么安全,总有人可以反映您的程序集并获取Guid的值。

谢谢,casperOne,但主要是为了防止用户启动应用程序的多个实例。我该如何获得Guid“我的应用程序入口点的完全限定类型名称”?你所描述的正是这个家伙为他的单实例应用程序所做的。看看吧:可能是重复的谢谢,亚当。我的搜索技能已经被击败了!链接StackOverflow帖子中的示例非常有用。