2010-05-08 60 views
1

我有一個閃存驅動器有一個應用程序,其代碼編寫爲VC++ 2008,該應用程序在xp中工作正常,但是當我將驅動器插入Windows 7機器時,該問題出現,它無法正常運行。有沒有什麼辦法可以通過編寫代碼使它與Windows兼容。對應用程序進行編碼,以便在Windows 7上正常運行...?

我不想設置在窗口7的相容性標籤以運行該程序..

我想它在程序代碼中,更像一個補丁。

+2

它以什麼方式不能「正常運行」?在大多數情況下,運行在XP上的任何東西都應該在Windows 7上運行,但您必須更具體。 – 2010-05-08 05:19:09

+1

偶然是Win 7 64位版本和XP 32位版本? – 2010-05-08 05:30:32

+0

@rajivpradeep:什麼是「內存分區」?如果您指的是邏輯分區,則一旦遷移到Windows 7,您的應用程序完全可能需要獲得管理權限。非管理應用程序不允許直接訪問物理磁盤介質。 – 2010-05-08 05:34:17

回答

2

您可以使用Microsoft Application Compatibility Toolkit,它會告訴您在Windows XP模式下運行應用程序時,代碼確切使用哪些Windows XP兼容性墊片。

您只需運行您的應用程序並禁用各種墊片,直到您的代碼再次表現不正確。您禁用的最後一個墊片是不正確行爲的原因。然後,您可以研究每個墊片的確切後果以及您的代碼必須執行哪些操作才能修復其中存在的強制其在Windows XP兼容模式下運行的錯誤。

1

您可能需要將Application Manifest添加到您的應用程序以請求相應的安全權限,以允許您的應用程序執行其所需的操作。

如果需要提升權限,這可能會導致向用戶顯示UAC提示,但是隨後您的代碼將被允許執行Windows 7當前阻止的任何操作。

+0

+1用於將清單建議爲問題,-1用於未指向Visual Studio項目屬性中的設置,該設置可以在不需要人寫出明確清單的情況下更改此設置。總計:0. – 2010-05-08 05:43:26

+0

@rajivpradeep:項目屬性 - >鏈接器 - >清單文件 - > UAC執行級別。將它改爲「RequireAdministrator」 – 2010-05-08 05:48:39

+0

對不起,孩子們決定我需要一個清晨,C++標籤並沒有影響我的大腦:-) – 2010-05-08 06:52:17

0

如果您知道問題存在,並且知道Win7上的UAC/etc .../Manifest沒有解決您的問題,並且它沒有與32/64位問題連接,請嘗試不同的方法。

我想你知道你的應用在Windows 7上出了什麼問題。如果你不確定,至少你應該知道你的問題在哪裏(在哪個邏輯塊)(例如IO塊,磁盤讀/寫塊,桂等

現在堅持到調試器希望你的程序不是那麼大,你不能分析它,找到你的問題的根源你可能有你的問題,因爲一些功能工作不是所期望的或類似的東西

然後,我想,你可以重新思考/重新控制你的代碼,並改變它在兩個平臺上的工作方式如果沒有通用解決方案,請使用#ifdef s來確定你的c urrent平臺(實際上是最壞的情況,因爲你必須爲不同的windows版本準備不同的二進制文件)。

相關問題