मेरी सी # अनुप्रयोग में, मैं प्रोग्राम के रूप में एक Oracle ग्राहक अगर एक, मौजूद नहीं है जो PATH प्रणाली वातावरण चर करने के लिए एक निर्देशिका जोड़ने की आवश्यकता है स्थापित करने हूँ नहीं पहचानता है। यह सब ठीक काम करता है, लेकिन जब तक उपयोगकर्ता विंडोज़ में लॉग इन नहीं करता है, या रीबूट करता है तब तक यह प्रभावी नहीं होता है। मैं अपने ऐप को इस चरण के बिना नए पाथ var को पहचानने और उपयोग करने के लिए कैसे प्राप्त कर सकता हूं? यहां तक कि मेरे ऐप को पुनरारंभ करना भी उपयोगकर्ता को लॉग इन/इन करने की आवश्यकता से बेहतर होगा।सी # /। नेट अनुप्रयोग पर्यावरण वार बदलें (पथ)
माना जाता है, अन्य प्रक्रियाओं के लिए यह परिवर्तन प्रसारण काम करना चाहिए। यहाँ है कि मैं क्या कोई सफलता के साथ, की कोशिश की है है:
using System.Runtime.InteropServices;
private const int HWND_BROADCAST = 0xffff;
private const int WM_WININICHANGE = 0x001a, WM_SETTINGCHANGE = WM_WININICHANGE, INI_INTL = 1;
[DllImport("user32.dll")]
private static extern int SendMessageTimeoutA(int hWnd, uint wMsg, uint wParam, string lParam, int fuFlags, int uTimeout, int lpdwResult);
int rtnVal = 0;
SendMessageTimeoutA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Environment", 2, 5000, rtnVal);
मैं अगर तुम बंद करो और प्रश्न में प्रक्रिया को पुनः प्रारंभ बताया गया है, यह परिवर्तन के इन प्रकार के लेने चाहिए, लेकिन मेरे ऐप को पुन: प्रारंभ नहीं करता है यह। मुझे लगता है कि यह ओरेकल मुद्दा हो सकता है, कि ओरेकल के बारे में कुछ बदलाव के लिए लॉगिन की आवश्यकता है, मुझे यकीन नहीं है। अग्रिम में धन्यवाद।
अपने अनुप्रयोग को पुनः प्रारंभ करने के लिए नए पथ चर लेने के लिए पर्याप्त होना चाहिए। आप अपने इंस्टॉलर को कैसे लॉन्च कर रहे हैं? – ChrisF
यह एक क्लिकऑन परिनियोजन है, शायद यह मुद्दा है? मैं शॉर्टकट से लॉन्च कर रहा हूं जो इंस्टॉल पर स्टार्ट मेनू में डाल दिया जाता है। –