Windows7軟體開發示例:UAC、系統版本、許可權?

 看到Win7的酷炫功能流口水,已經忍不住想擁抱呢?別急,Win7的脾氣可不好,要想擁抱它的新功能,我們的軟體必須嫁給它——在Win7下能正常執行。,個人開發者開發的中小軟體,功能相對簡單,與系統的緊密程度普遍較低,新增一些Win7必要的正常執行的元素就OK啦!

Windows7軟體開發示例:UAC、系統版本、許可權

步驟/方法

嫁給Win7的必要條件
  我們必須要給軟體新增的是系統版本檢測和安裝路徑選擇元素,為什麼要考慮它們呢?
必要條件1:檢測系統版本
  軟體在執行初期需要判斷作業系統的型別及版本號,並根據作業系統型別執行特定的程式碼,相同的功能在不同作業系統上可能會執行不同的程式碼。大多數軟體的在Win7下無法正常執行都是因為判斷作業系統版本失敗造成的。
  當版本檢測出錯時,很多軟體也會跟著出錯,使用者可能會發現雙擊軟體圖片後,什麼反映都沒有,或者可能會看到一個對話方塊“你必須執行在Microsoft Windows XP或更新版本”,但實際上計算機已經安裝了Win7 。
必要條件2:適應使用者許可權
  Win7預設執行的是非管理員賬號,許可權相對較小。而軟體的安裝程式會往包括系統盤的Program Files、Windows安裝目錄、登錄檔中寫入一些資料(軟體在執行時可能會將一些使用者資料儲存到系統資料夾或登錄檔中),如果當前使用者的許可權不夠,軟體就無法正常入駐Win7。
  小知識: UAC是一種降低Windows使用者預設許可權的辦法,這樣會給使用者帶來安全性的提高,它可以一定程度上遏制了一些病毒的發作——關閉防毒軟體、啟動複製及散播病毒程序、注入網遊客戶端、監聽鍵盤操作從而盜竊密碼。
  例如資料看似儲存成功,在寫入的地點卻找不到,或者登出切換到另一個Windows使用者時,無法找到儲存的資料。引起這類問題的根源是Win7的UAC機制,它降低了Windows使用者的預設許可權,使得一些普通操作無法更改系統設定及系統保護的資料夾。
  小提示:軟體要結合系統某些功能時,需要呼叫相應的API。API呼叫得當否,對軟體執行非常關鍵,我們從下期開始結合Win7酷炫功能,單獨介紹如何正確的呼叫。Win7最新的API,有Win7特有的工作列個性化快捷選單(Jump List)、程式圖示輪廓效果(Icon Overlay)、程式圖示進度條效果(Progress Bar)、標籤式縮圖(Tabbed Thumbnail)和縮圖工具欄(Thumbnail Toolbar)……

“婚禮”必要的元素
  我們的軟體要順利嫁給Win7,在軟體中要新增以下的元素。
1.程式碼檢測作業系統版本號
在軟體中新增判斷作業系統是Win7 或2008 Server的程式碼:
C#
if (Environment.OSVersion.Version > new Version(5, 1))
{MessageBox.Show("Windows 7 or Windows 2008 Server","Operating System",
MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
2.儘量將資料儲存在非系統盤
  軟體不要預設安裝到系統盤,在編寫軟體安裝路徑時,要考慮這個。此外,還需要在軟體中新增修改讀寫登錄檔的程式碼,使用HKEY_CURRENT_USER\Software下的鍵值作為儲存資料的結點:
static void Main(string[] args)
{
var registryKey = Registry.CurrentUser.CreateSubKey(
@"Software\test");
registryKey.SetValue("name", "zswang");
registryKey = Registry.CurrentUser.OpenSubKey(@"Software\test");
Console.WriteLine(string.Format("{0}={1}\r\n",
"name", registryKey.GetValue("name")));
}
3.提高程式的執行許可權
  如果使用者使用了管理員身份進入系統,又希望把軟體安裝在系統盤,又該如何呢?需要判斷使用者許可權的許可權,簡單的解決方案是新增清單檔案。在可執行資料夾中找到與可執行檔案相同名字且副檔名.manifest的檔案,輸入以下程式碼即可:


processorArchitecture="X86"
name="test"
type="win32"/>
Description of your application



level="requireAdministrator"
uiAccess="false"/>



系統, 軟體, 版本, 許可權, 示例,
相關問題答案