2015-10-12 37 views
1

我在我的C#應用​​程序中遇到了一個奇怪的問題。我的應用程序正在使用一些外部.dll文件(用於外部數據庫訪問的MySQL和用於錯誤報告的NBug),它們與main .exe存儲在同一目錄中。似乎是.dll權限的問題C#

安裝我的應用程序,並從開始菜單運行後,它加載並正常工作,確認mysql.dll正在訪問罰款。但是,當應用程序崩潰時(由於未處理的異常),通常NBug錯誤處理程序將彈出,但它不會。而Windows風格的錯誤記者出現了。

執行進一步的調查後,如果我從程序文件以外的位置(如我的桌面上)運行應用程序,則NBug記者加載正常。這導致我相信這可能是一個權限問題。所以我試圖以程序文件的管理員身份運行該應用程序,然後Nbug記者正常工作!

它爲什麼這樣表現?如果用戶每次啓動應用程序都以管理員身份運行應用程序並不理想,也不適合在啓動時讓應用程序請求管理權限。它不應該需要我這樣做。

它似乎也只能在Windows 10上以這種方式工作。我已經在Windows 7和XP上運行過很多次,它不會給我這個問題。 Win 10中是否存在某種權限更改?但爲什麼Mysql.dll按預期工作,但不是NBug?

+0

嗯,這也取決於用戶最初如何設置計算機。如果有什麼你應該設置權限公開 – FirebladeDan

+0

設置公開哪些權限? – nerdalert

回答

2

好吧,我已經找到了問題。顯然,在Windows 7/8/10中,微軟添加了UAC,它需要用戶授予程序權限才能提升權限。在XP中,我相信這是自動化的,無需用戶干預。

現在NBug需要這些提升權限的原因是因爲被調用時,它會寫入位於同一目錄中的日誌文件。所以通過禁用日誌記錄,NBug不再需要提升權限。

這解決了我的問題。我正在發帖,因爲這可能對他人有幫助。

+0

感謝您的好解釋。我將從現在開始默認爲false或解釋文檔中可能發生的情況。創建任務在這裏:https://github.com/soygul/NBug/issues/59 –

+1

很高興我能貢獻! – nerdalert