全部。這可能看起來像一個重複的問題,在這裏有很多關於提升和降低兒童進程的問題。是否可以提升多個子進程的權限,僅提示一次?
我知道使用UseShellExecute = true
連同Verb = "runas"
選項以提升權限啓動子進程。
例(在許多問題的答案找到):
var info = new ProcessStartInfo(Assembly.GetEntryAssembly().Location)
{
UseShellExecute = true, // !
Verb = "runas",
};
我在這裏的問題是不是開始升高訪問的子進程,我想知道是否有一種方法來提示升高訪問只一次,之後幾次啓動同一個子進程,比如說其中的8個進程。
我正在使用的應用程序使用排隊系統來處理任務。根據用戶的內核數量,爲每個內核啓動子進程(QueueProcessor),然後開始處理該隊列。因此,本質上,我想檢查用戶的權限,提升權限一次,並啓動所有8個隊列處理器。
我無法使用manifest-route來要求整個應用程序在管理權限中運行,因爲這不是我們許多用戶的選項。編輯根據@ MPatel的評論:爲了澄清,我們特別不強制用戶按照設計決定以管理員身份運行應用程序。
顯然你可以看到當你每次想要運行這些任務之一時,如果你不得不點擊UAC對話8次,它會變得很煩人。
我遇到了這篇文章:Vista UAC The Definitive Guide,在我的搜索過程中,但我在C#.NET 3.5項目中實現C++ dll時遇到問題。這是基本上讓我問這是否可能的文章。
可能值得一提的另一件事:我不確定我是否稍微誤解了這個問題。用戶必須有足夠的權限才能使用我們程序使用的基本SQL功能。所以我認爲我的問題可能不是讓子進程運行完整的管理權限,而是讓子進程啓動。我得到的問題是.NET不允許某些用戶從正在運行的應用程序運行子進程。讓用戶使用「以管理員身份運行」運行主應用似乎可以解決此問題。是否有一些UAC特定的權利,我可以通過提示設置一次,以允許主App啓動child.exe?
用提升的權限啓動父進程?當然,這將啓動具有相同權限的所有子進程。 – 2014-09-25 09:31:07
我已經編輯了一下這個問題。我們特別不強制用戶以管理員身份運行。爲什麼我在問題中添加了最後一位,我們的用戶至少可以訪問sql服務器並執行查詢,所以這實際上是我需要的所有權利。所以我認爲我的問題可能會更強迫父應用程序能夠啓動子進程。 – DeVil 2014-09-25 09:41:29