2010-07-21 14 views
5

आप वीबीएनईटी से एक और .exe कैसे चलाते हैं लेकिन एक अन्य उपयोगकर्ता के रूप में?आप किसी अन्य उपयोगकर्ता के रूप में VB.NET से एक और .exe कैसे चलाते हैं?

मुझे उम्मीद है कि "बाएं क्लिक -> रन के रूप में -> उपयोगकर्ता/पास दर्ज करें -> ठीक क्लिक करें" यदि मैं ऐसा करता हूं, तो मेरा एप्लिकेशन अपेक्षित रूप से चलता है (मुझे इसे किसी अन्य उपयोगकर्ता के रूप में चलाने की आवश्यकता है नेटवर्क में कुछ फ़ोल्डर तक पहुँच प्राप्त करने के लिए)

लेकिन अगर मैं VB.NET में इस का उपयोग System.Diagnostics.Process.Start(System.Windows.Forms.Application.ExecutablePath, PARAMETER, USER, PASSWORD, DOMAIN)

आवेदन इंटरॉप के साथ अपने ऐप के अंदर अन्य उपयोगकर्ता के साथ चलता है .. लेकिन एक्सेल() खोलने के लिए विफल रहता है प्रतिबंधित फ़ोल्डर में फ़ाइल।

(मैं फिर से उसी अनुप्रयोग चलाने लेकिन किसी दूसरे उपयोगकर्ता के साथ, बस अधिक .exe फ़ाइल बनाने से बचने के लिए ... लेकिन मैं पहले से ही VBScript साथ की कोशिश की)

फिर, Process.Start एक्सेल का उपयोग कर खोलने में विफल रहता है अन्य उपयोगकर्ता ... लेकिन बाएं क्लिक -> उस पर succedes के रूप में चलाओ ... क्यों ?? दूसरा रास्ता??

इस

कि एप्लिकेशन क्या करता है:

  1. एप्लिकेशन खोलें
  2. जांच वहाँ एक पैरामीटर
  3. अगर अगर कोई पैरामीटर, तो अन्य उपयोगकर्ता के साथ आवेदन को पुन: लॉन्च और कुछ पैरामीटर भेज
  4. यदि कोई पैरामीटर खुला एक्सेल
  5. एक xlsx फ़ाइल खोलें

लेकिन अगर मैं डबल क्लिक करता हूं ... एक्सेल खुलता है ... 50% सीपीयू का उपयोग करता है, और मुझे त्रुटि देता है कि यह फ़ाइल नहीं खोल सकता है ...

यदि मैं इसे सीधे वांछित उपयोगकर्ता के साथ चलाता हूं और पास ... सबकुछ ठीक से निष्पादित करता है इसे हल करने के तरीके के बारे में कोई सुझाव? (प्रतिरूपण ठीक काम करता है .. लेकिन यह वास्तविक उपयोगकर्ता के साथ एक्सेल खोलता है .. अधिकारों वाला कोई नहीं)

धन्यवाद!

उत्तर

0

यह वास्तव में दिलचस्प है। डिफ़ॉल्ट रूप से, मेरा मानना ​​है कि एक्सेल COM घटक Interactive User (यानी उपयोगकर्ता बॉक्स में लॉग इन) के रूप में चलाने के लिए सेट अप हैं। यदि वे configured to runLaunching User के रूप में हैं तो प्रतिरूपण कार्य करना चाहिए। बेशक, यह समझा नहीं जाता है कि क्यों "चलाएं ..." काम करता है (मुझे उस के मैकेनिक्स को नहीं पता है, इसलिए शायद यह प्रतिरूपण नहीं है)।

एक विचार है कि फ़ाइलों को किसी स्थान पर कॉपी करने के लिए एप्लिकेशन को पुन: स्थापित करना है Excel Excel का उपयोग कर सकते हैं, उन्हें कुशल बना सकते हैं, और फिर वापस कॉपी कर सकते हैं।

dim info As New ProcessStartInfo("...") 

info.UseShellExecute = False 

info.RedirectStandardInput = True //This is the key 

info.RedirectStandardError = True //This is the key 

info.RedirectStandardOutput = True //This is the key 

info.UserName = "username" 

info.Password = "password" 

Using (install As Process = Process.Start(info)) 


     Dim output As String = install.StandardOutput.ReadToEnd() 

     install.WaitForExit() 


End Using 

निर्दिष्ट RedirectStandardOutput में से किसी एक = सच RedirectStandardError = सच है, या RedirectStandardInput = सच करने की प्रक्रिया का कारण बनता है:

+0

क्षमा करें ... मैंने परियोजना को त्याग दिया: पी लेकिन मुझे लगता है कि यह समाधान होगा – figus

1

आप मिलता है "हैंडल अमान्य है" त्रुटि है, तो आप कुछ इस तरह की कोशिश करनी चाहिए STARTF_USESTDHANDLES के साथ लॉन्च किया जाए। यदि आपकी प्रक्रिया में इनमें से कोई भी हैंडल नहीं है, तो CreateProcessWithLogon "अमान्य हैंडल" के साथ विफल हो जाएगा।

आपको इसे पुनर्निर्देशित करना होगा (भले ही आप इसे कुछ लिखना नहीं चाहते हैं)।

सम्मान

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