2010-07-21 16 views
5

Làm thế nào để bạn chạy một .exe khác từ VB.NET nhưng là một Người dùng khác?Làm thế nào để bạn chạy một .exe khác từ VB.NET với tư cách người dùng khác?

Tôi dự kiến ​​sẽ khởi chạy một .exe như "Nhấp trái -> Chạy dưới dạng -> Nhập người dùng/Vượt qua -> Nhấp OK" Nếu tôi làm điều đó, ứng dụng của tôi chạy như mong đợi (tôi cần chạy nó như một người dùng khác để có được quyền truy cập vào một số thư mục trong mạng)

nhưng nếu tôi sử dụng này trong VB.NET System.Diagnostics.Process.Start(System.Windows.Forms.Application.ExecutablePath, PARAMETER, USER, PASSWORD, DOMAIN)

ứng dụng này chạy với người dùng khác .. nhưng Excel (bên trong App của tôi với Interop) thất bại trong việc mở tệp trong thư mục bị hạn chế.

(Tôi chạy lại ứng dụng tương tự, nhưng với một người dùng khác nhau, chỉ để tránh tạo ra file .exe hơn ... nhưng tôi đã cố gắng với VBScript)

Một lần nữa, Process.Start KHÔNG để mở excel sử dụng Người dùng khác ... nhưng Nhấp trái -> Chạy như succedes tại đó ... tại sao ?? cách khác??

đây là những gì các ứng dụng làm:

  1. Mở ứng dụng
  2. kiểm tra nếu có một tham số
  3. nếu không có tham số, rồi khởi chạy lại ứng dụng với người dùng khác và gửi một số thông số
  4. nếu có thông số mở excel
  5. mở tệp xlsx

nhưng nếu tôi nhấp đúp chuột ... Excel mở ... sử dụng CPU 50%, và cho tôi lỗi rằng nó không thể mở tập tin ...

nếu tôi chạy trực tiếp với người dùng mong muốn và vượt qua ... tất cả mọi thứ thực hiện tốt Bất kỳ đề xuất như thế nào để giải quyết này? (mạo danh hoạt động tốt .. nhưng nó sẽ mở Excel với người dùng thực tế .. không phải là người có quyền)

Cảm ơn!

Trả lời

0

Điều này thực sự thú vị. Theo mặc định, tôi tin rằng các thành phần COM Excel được thiết lập để chạy như Interactive User (tức là người dùng đăng nhập vào hộp). Nếu chúng là configured to run làm Launching User thì việc mạo danh sẽ hoạt động. Tất nhiên, điều này không giải thích tại sao "Run As ..." hoạt động (tôi không biết cơ chế của điều đó vì vậy có lẽ nó không phải là mạo danh).

Một ý tưởng là cấu trúc lại ứng dụng để sao chép các tệp vào một vị trí mà Excel có thể truy cập, thao tác chúng và sau đó sao chép lại.

+0

xin lỗi ... Tôi đã từ bỏ dự án: P nhưng tôi nghĩ đây sẽ là giải pháp – figus

1

Nếu bạn nhận được "Xử lý không hợp lệ" lỗi, bạn nên thử một cái gì đó như thế này:

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 

Xác định bất kỳ một trong RedirectStandardOutput = true, RedirectStandardError = true, hoặc RedirectStandardInput = true gây quá trình này để được khởi chạy với STARTF_USESTDHANDLES. Nếu quá trình của bạn không có bất kỳ xử lý nào, thì CreateProcessWithLogon sẽ thất bại với "Xử lý không hợp lệ".

Bạn PHẢI chuyển hướng nó (ngay cả khi bạn không có ý định viết gì cho nó).

Kính trọng