我的任何計算機上都沒有XP。我努力讓一個小型應用程序在Vista和Windows 7中以管理員身份運行。然而我的測試者之一。報道稱,在Windows XP上,他是獲得以下異常:在Windows XP中授予應用程序權限以更改註冊表
System.UnauthorizedAccessException: Access to the registry key 'HKEY_CLASSES_ROOT\.ad2' is denied.
at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)
我使用的運行試圖寫入註冊表中的應用程序的代碼是:
var proc = new ProcessStartInfo {
UseShellExecute = true,
WorkingDirectory = Environment.CurrentDirectory,
FileName = Path.Combine(Application.StartupPath, "ADEFileAssociator.exe"),
Verb = "runas"
};
try {
Process.Start(proc);
}
catch {
MessageBox.Show("Failed to start File Associator", "Process Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
這對於打開UAC對話框的Vista和Win7來說工作正常。如果用戶接受運行,則註冊表將在這些版本上更新。我認爲這同樣適用於XP。顯然我錯了。所以我的問題是'我還需要做些什麼來讓我的應用程序在XP中寫入註冊表?
用戶是管理員嗎?如果沒有,他可以做任何事情來製作該註冊表鍵。 – soandos 2011-05-12 16:32:40