2010-07-28 63 views
2

我想使用GUID我的Microsoft Visual C#2008 Express Edition的項目大會信息在用於用來確認只有一個應用程序實例是一個互斥運行。如何訪問GUID?我只需要在Program.Main(...)函數中使用它。謝謝。訪問大會信息GUID在C#窗體應用程序

+0

你描述的正是這個傢伙做了他的單實例應用程序。檢查出來:http://www.codeproject.com/KB/cs/SingleInstanceAppMutex.aspx – 2010-07-28 19:53:31

+0

的可能的複製[如何編程得到.net2.0應用程序的GUID(http://stackoverflow.com/questions/502303/how-do-i-program-get-the-guid-of-an-application-in-net2-0) – user 2016-03-08 19:52:53

回答

4

類似的問題,有人問MSDN:

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

下面是代碼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]; 
} 

一些值也可通過Assembly類型可供選擇:

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

+0

謝謝,亞當。我的搜索技能已被超越!鏈接的StackOverflow帖子中的示例最有幫助。 – 2010-07-28 20:06:33

1

您可以調用靜態GetExecutingAssembly method on Assembly來獲取當前正在執行的程序集。

但是,除非你有與組件相關的Guid attribute,你不能保證有一個GUID與大會相關的所有的時間。

如果您確實有一個Guid屬性與程序集關聯,那麼您可以拿到程序集實例並調用GetCustomAttributes就可以了,它將返回與程序集關聯的Guid屬性,然後您可以查詢Guid。

我會建議然而,使用你的應用程序作爲名稱的入口點的完全限定類型名稱。它具有更好的語義,並且是組裝合格的,賦予其相當的獨特性。

如果您有關於其他人使用該值,以防止運行你的應用程序,使用一個GUID是不是更安全,有人總能反映你的程序集,並得到GUID的價值的擔憂。

+0

謝謝,casperOne,但它主要是爲了防止用戶啓動應用程序的多個實例。 – 2010-07-28 19:42:15

+0

我將如何得到「[my]應用程序入口點的完全限定類型名稱」? – 2012-10-08 07:45:19

相關問題