2010-07-28 45 views
2

Je voudrais utiliser le GUID dans les informations d'assemblage de mon projet Microsoft Visual C# 2008 Express Edition pour une utilisation dans un Mutex qui est utilisé pour vérifier qu'une seule instance de l'application est fonctionnement. Comment peut-on accéder au GUID? J'ai seulement besoin de l'utiliser dans la fonction Program.Main(...). Merci.Accès aux informations d'assemblage GUID dans une application Formulaire C#

+0

Ce que vous décrivez est exactement ce que ce type a fait pour son application d'instance unique. Check it out: http://www.codeproject.com/KB/cs/SingleInstanceAppMutex.aspx –

+0

Copie possible de [Comment obtenir par programme le GUID d'une application dans .net2.0] (http://stackoverflow.com/questions/502303/how-do-i-program-get-the-guid-of-an-application-in-net2-0) – user

Répondre

4

Une question similaire a été posée sur MSDN:

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/5faa901a-7e70-41f4-a096-3e6053afd5ec

Voici le code Exerpt:

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]; 
} 

Certaines valeurs sont également disponibles via le type Assembly:

How do I programmatically get the GUID of an application in .net2.0

+0

Merci, Adam. Mes compétences de recherche ont été trompées! L'exemple dans le poste StackOverflow lié a été très utile. –

1

Vous pouvez appeler le GetExecutingAssembly method on Assembly statique pour obtenir l'assembly en cours d'exécution. Cependant, sauf si vous avez un Guid attribute associé à l'assemblage, vous n'êtes pas assuré d'avoir toujours un Guid associé à l'assemblage. Si vous avez un attribut Guid associé à l'assembly, vous pouvez prendre l'instance d'assembly et appeler GetCustomAttributes dessus et retourner l'attribut Guid associé à l'assembly, que vous pouvez ensuite interroger pour le Guid.

Je suggère cependant d'utiliser le nom de type complet du point d'entrée de votre application comme nom. Il a une meilleure signification sémantique et est qualifié pour l'assemblage, ce qui lui confère une certaine quantité d'unicité.

Si vous craignez que quelqu'un d'autre utilise cette valeur pour empêcher votre application de fonctionner, l'utilisation d'un Guid n'est pas beaucoup plus sûre, quelqu'un peut toujours refléter votre assemblage et obtenir la valeur du Guid.

+0

Merci, casperOne, mais c'est surtout pour empêcher l'utilisateur de lancer plus d'une instance de l'application. –

+0

Comment obtenir "le nom de type complet du point d'entrée de [my] application"? –