Tôi có ứng dụng Windows Forms (C#, NET 3.5) được cài đặt bằng trình cài đặt MSI. Trong ứng dụng này, tôi có một nút bấm khi mở một trình duyệt với một URL cụ thể. Tôi sử dụngC# Windows Forms không mở trình duyệt mặc định sau khi cài đặt
Process.Start(url);
để mở trình duyệt. Điều này hoạt động tốt khi gỡ lỗi, nhưng sau khi cài đặt nó có ít hơn kết quả tối ưu. Ví dụ.
- Nếu tôi cài đặt nó với tùy chọn Just Me được chọn, tôi mở trình duyệt mặc định trình duyệt (FF) với cài đặt hiện tại.
- Nếu tôi cài đặt nó với các tùy chọn Mọi người, khi tôi bấm nút nó sẽ mở ra một phiên bản của trình duyệt IE với ra bất kỳ cài đặt gần đây của tôi (proxy, thanh công cụ hiển thị vv)
Theo như tôi có thể cho biết vấn đề này là do người dùng liên kết với ứng dụng khi cài đặt.
Có tính đến việc người dùng có thể yêu cầu proxy và cài đặt trình duyệt cá nhân và rằng lựa chọn Just Me, Everyone sẽ vẫn tiếp tục với người dùng. Hành động o khóa học tốt nhất là gì?
Tôi đã thử gọi Process.Start (url) với hiện đăng nhập người dùng bằng
ProcessStartInfo.UserName = Environment.UserName
Nhưng nó cũng đòi hỏi phải có một mật khẩu và yêu cầu thông tin không phải là một lựa chọn.
Bạn có bất kỳ đề xuất nào khác không, tôi có đang sử dụng Process.Start() không chính xác, có cài đặt nào tôi cần thực hiện trong quá trình cài đặt không, có bất kỳ điều gì tôi đã bỏ sót không?
UPDATE: Sử dụng Process Explorer như data_smith đề nghị tôi nhận thấy như sau:
- Nếu tôi cài đặt ứng dụng cho tất cả mọi người sẽ bắt đầu dưới NT AUTHORITY \ user HỆ THỐNG do đó trình duyệt chưa được cấu hình.
- Nếu tôi cài đặt các ứng dụng với Just Me chọn nó bắt đầu dưới người dùng hiện
Có cách nào, mà không yêu cầu chứng chỉ, để làm cho sự bắt đầu ứng dụng (tại cửa sổ khởi động) theo người sử dụng hiện nay thậm chí mặc dù nó được cài đặt cho tất cả mọi người?
UPDATE: Tiếp theo là một gợi ý bởi data_smith sử dụng ShellExecute và những gợi ý here và here tôi đã có thể giải quyết vấn đề và nhận được hành vi mong muốn.
Vấn đề chính là khi trình cài đặt hoàn tất, ứng dụng đã được bắt đầu với Process.Start(); Điều này bắt đầu ứng dụng như người dùng NT AUTHORITY \ SYSTEM (người cài đặt người dùng chạy dưới), do đó tất cả các trình duyệt được mở bởi ứng dụng này cũng sẽ thuộc người dùng SYSTEM. Bằng cách sử dụng đề xuất từ data_smith và các đề xuất được liên kết ở trên, tôi đã có thể bắt đầu quá trình theo người dùng hiện tại.
Sau khi khởi động lại máy tính, ứng dụng bắt đầu theo đúng người dùng vì điều này được định cấu hình thông qua các mục đăng ký.
Bạn có chạy ứng dụng của mình từ trình cài đặt không? – ogggre
Sau khi ứng dụng được cài đặt, nó sẽ bắt đầu ngay lập tức và nó luôn bắt đầu lúc khởi động máy. Nó nằm trong khay hệ thống. – Constantin
Tôi nghĩ những gì @ogggre hỏi là, ứng dụng của bạn có được khởi chạy bởi trình cài đặt không? Đây có thể là vấn đề liên quan đến "thông tin xác thực". Sử dụng ProcExp (bởi SysInternals) để xem phụ huynh của bạn chương trình. – data