2012-03-07 145 views
3

我開發了一個wpf應用程序在我的windows xp機器上,VS 2010的目標是.net framework 3.5 sp1並使用wpf工具包。我已經使用sqllite作爲應用程序的數據庫。當我在windows xp sp2或sp3上部署該應用程序時,它運行良好。但是當我在Windows 7家庭高級版x64或Windows 7 Ultimate x84上部署此應用程序時,當我點擊打開彈出窗口的按鈕時,應用程序崩潰。但是當我將兼容模式設置爲該應用程序的windows xp sp3時。該應用程序在Windows 7中運行良好。我很困惑這個問題。請讓我知道如果你發現問題和解決方案?應用程序在Windows XP中運行良好,但在Windows 7中運行時應用程序崩潰?

+3

附加一個調試器。 – 2012-03-07 07:17:37

+1

您是否使用任何本地電話? (例如DLL或p/invoke或「不安全」)。如果是這樣,創建可以在x86 *上工作的東西相對容易,但是不能* x64或反之亦然。 (也就是說,我認爲它不是與*版本*有關,而是*位*。兼容性不會影響* bitness *。請嘗試在Windows 7 * x86 *中進行驗證。) – 2012-03-07 07:19:36

回答

2

最好的方法是如果您可以在Win7機器上安裝開發環境並在調試器中運行該程序。

如果這不是一個選項,您可以將一個事件處理程序添加到AppDomain.UnhandledException。在事件處理程序中添加一個簡單的調用messagebox,儘可能多地顯示異常,包括堆棧跟蹤。這應該會顯示導致程序崩潰的錯誤。

+0

是否有一些與簽名文件和未簽名文件有關的事情 – 2012-03-07 12:50:38

+0

即使無法附加調試器,仍然可以調試小型轉儲器。 – tenfour 2012-03-08 02:04:12

0

最有可能的是,您正在使用Windows 7中受限制的路徑。您是否在以下任一路徑中寫入數據或存儲數據庫?這些路徑需要管理員訪問才能寫入。

文件夾
C:\ Documents和Settings \ All用戶
C:\ Program Files文件
C:\ ProgramData

註冊表配置單元
HKEY_CLASSES_ROOT
HKEY_LOCAL_MACHINE

意識到您的應用程序可能安裝在Program Files中,因此安裝在同一文件夾中的任何設置文件或數據庫都將是隻讀的。

解決方案是將動態文件重定位到%AppData%%LocalAppData%之類的位置,或者修改所需文件或文件夾的權限以允許所有用戶讀/寫訪問。

1

我想我已經找到了解決方案。當我試圖將應用程序安裝到程序文件以外的任何其他位置時,它的工作正常。可能是問題是我已將sqllite db文件放入安裝文件夾,該文件夾默認爲c:\ program files,在win 7中寫入權限被拒絕。所以當我試圖插入任何記錄到數據庫中時,它顯示一個錯誤。

+0

http://technet.microsoft.com/en-us/library/cc709691%28v=ws.10%29.aspx瞭解UAC,然後您將看到如何正確使用它。 – 2012-03-12 07:18:44

相關問題