我在這裏有點迷路。以另一個管理員身份啓動應用程序
我有一個應用程序,我們稱之爲App1。
App1正常工作。在某些情況下,App1需要執行另一個程序App2。
代碼很簡單:
/*call app2*/
ProcessStartInfo startInfo = new ProcessStartInfo(Convert.ToString(ConfigurationManager.AppSettings["pathActualizador"]));
startInfo.UseShellExecute = false;
try
{
System.Diagnostics.Process.Start(startInfo);
}
catch (ArgumentException)
{
MessageBox.Show("Error en parármetros enviados al Actualizador..", Properties.Resources.txtTituloAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/*close app1 and letting app2 do its work*/
Application.ExitThread();
在某些情況下,我有問題致電APP2授權。 App1是一個簡單的系統,app2需要創建,移動和刪除一些文件和文件夾(這就是爲什麼給我麻煩) 至少,我們解決它作爲管理員de app2執行,通過右鍵單擊 - >屬性 - >以管理員身份執行。
我想解決這個問題。 我讀過很多文章,關於在SO中創建清單文件。 所以,我創建了一個。 我從應用程序項目添加新的項目 - >添加新項 - > app.manifest
並通過創建的默認,只有改變了這種
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
此清單是對APP。 我們在100臺電腦上都有這兩個應用程序,並且我們無法逐一更改它們(大部分都在另一個國家) 但是我們有一個應用程序來修改,發送一些命令來拋出Internet,app1。 所以,我讀過如果一個進程創建另一個進程,這個新進程將具有與其父進程相同的ExecutionLevel。因此,在App1中添加清單時,當它創建App2的流程時,應該以管理員身份執行
我是對是不是?另一方面,我已經添加了清單,編譯並將.exe和.manifest發送到客戶端,運行,並且我仍然遇到同樣的問題:app2無法訪問文件夾來修改它們,返回一個特權問題。
有什麼問題嗎?我必須爲App2創建一個清單來代替?這是有點困難,也很難對每一臺機器配置窗口..
我讀過,我也可以這樣做
startInfo.Verb = "runas";
而且還讀到,在未來(2008年說,這)這可以被忽略,唯一的方法就是使用manifest。所以我想避免這個選項
編輯:使用Visual Studio 2010,.NET 3.5
EDIT2:我已經試過 「運行方式」,也沒有工作。用戶沒有管理員,所以沒有管理員的權限
爲什麼不在虛擬機中模擬它並自己嘗試一下呢? – tomfanning
第一個選項不起作用;我已經說過,已經嘗試過了。第二個可以工作,但我說我想避免這種情況,因爲將來它會被忽略。 –
我在下面發佈了一個答案,因爲這不應該要求管理員憑據。 – Woot4Moo