簡體   English   中英

授予應用程序權限以更改Windows XP中的注冊表

[英]Giving Application Rights to Change Registry in Windows XP

我的任何計算機上都沒有XP。 我努力使一個小的應用程序在Vista和Windows 7中以管理員身份運行。 但是我的一名測試人員報告說,在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中的注冊表,我還需要做什么?

對於XP,您沒有UAC,因此不能使用runas動詞。 相反,您能做的最好的就是設置ProcessStartInfoUserNamePassword屬性。 這很爛,因為您必須顯示身份驗證對話框或對值進行硬編碼!

如果我處於您的位置,我會非常想辦法避免必須獲得管理員權限? 如果失敗,那么我可能會將您的應用程序作為具有管理員權限的條件在XP上運行的前提條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM