2011-06-16 12 views
5

ऐसा लगता है कि जब मित्र exe नाम के बजाय क्लिकऑन का उपयोग करके एप्लिकेशन को तैनात किया जाता है तो FriendlyName को "DefaultDomain" पर सेट किया जाता है। मैं अपने विंडोज़ को अन्य संभावित क्लिकऑन ऐप से अलग करना चाहता हूं जो "डिफ़ॉल्ट डोमेन" भी हो सकता है।मैं एक क्लिकऑन परिदृश्य में AppDomain FriendlyName कैसे सेट करूं?

स्पष्टीकरण: हम एक अप्रबंधित कॉल का उपयोग कर रहे हैं,

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

उपयोगकर्ता के डेस्कटॉप के आसपास खिड़कियों के वर्ग के नाम को पुनः प्राप्त है, और यकीन है कि हम द्वारा बनाई खिड़कियों के लिए एक निश्चित तरीके से प्रतिक्रिया करने की जरूरत के लिए हमारी आवेदन। क्लिकऑन द्वारा तैनात किए जाने पर, हमारी विंडो अब एक्सई नाम को डोमेन के रूप में नहीं ले जाती है और अन्य संभावित क्लिकऑन परिनियोजित ऐप्स से आसानी से अलग नहीं की जाएगी।

+0

लॉग 4नेट के पैटर्नलेआउट से% a या% appdomain का उपयोग करके FYI इस सुंदर डिफ़ॉल्ट डोमेन स्ट्रिंग को भी लौटाता है। – BlackICE

उत्तर

1

महान प्रश्न।

मैं यह सुनिश्चित नहीं कर सकता कि यह मामला क्यों है, लेकिन मेरा मानना ​​है कि शायद यह एप्लिकेशन अलग-अलग 'होस्ट' है क्योंकि यह 'क्लिकऑन एप्लिकेशन परिनियोजन सहायता लाइब्रेरी' है जो एप्लिकेशन लॉन्च कर रहा है।

हालांकि, अगर आपके पास ऐपडॉमेन का उपयोग करने की असंतोषजनक इच्छा है। फ्रेंडेंडनाम अपने अनुप्रयोगों को अलग करने के लिए, तो शायद आप स्वयं को एपडोमेन बना सकते हैं और अपना खुद का दोस्ताना नाम परिभाषित कर सकते हैं।

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

मैं बहुत जल्दी regex बनाया है, इसलिए कोई gurantees:

एक और विचार है कि इसी उद्देश्य को पूरा होगा आवेदन पूर्ण नाम का उपयोग करने के लिए इस प्रकार होगा। यहां एक लिंक है जो नामकरण सम्मेलनों को बताता है: http://blogs.msdn.com/b/shawnfa/archive/2004/06/30/170241.aspx

एक और विचार केवल कॉलिंग असेंबली नाम प्राप्त करने के लिए प्रतिबिंब का उपयोग करना होगा, लेकिन यह सभी आंशिक-विश्वास वातावरण में इतना अच्छा काम नहीं करेगा।

+0

मुझे यह स्पष्ट करना चाहिए कि इस मुद्दे को ऐप के भीतर से ऐपनाम नहीं मिल रहा है, लेकिन मैंने ऐप से उत्पन्न विंडोज़ की विंडो क्लास निर्धारित करने के लिए कुछ अप्रबंधित पुस्तकालयों का उपयोग किया, और दुर्भाग्यवश, वे सभी डिफ़ॉल्ट डोमेन कहते हैं। – tofutim

संबंधित मुद्दे