首先,是的,我在網上搜索這個主題,但是我的案例更具體一些,所以這就是我的問題的原因。開發一個以管理員身份運行命令的應用程序
我的應用程序是在Visual Studio .NET 2005 Framework 2.0的開發可執行的winform應用程序,C#
該應用程序需要運行一個命令行上一些命令。該命令必須以管理員身份運行。
,實際工作的代碼是:
string output = "";
Process Consola = new Process();
ProcessStartInfo ConsolaStartInfo = new ProcessStartInfo();
ConsolaStartInfo.FileName = "cmd.exe";
ConsolaStartInfo.WorkingDirectory = System.Environment.SystemDirectory;
ConsolaStartInfo.UseShellExecute = !NeedOutput;
ConsolaStartInfo.RedirectStandardOutput = NeedOutput;
Consola.StartInfo = ConsolaStartInfo;
ConsolaStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
ConsolaStartInfo.CreateNoWindow = true;
ConsolaStartInfo.Arguments = "/C " + CommandToPerform;
ConsolaStartInfo.Verb = "runas";
Consola.Start();
Consola.WaitForExit();
其中:
CommandToPerform is a string var with a command
NeedOutput is true or false depending if i need a return output or not.
(This works)
第一個技巧是:這個應用程序完美的作品,就好像我在運行Visual Studio的管理員預期Windows 7.
第二個技巧是:如果我以管理員身份運行Visual Studio NOT,此應用程序完美地工作,但每次執行命令行時這個過程要求我在屏幕上進行安全驗證(UAC)
是的,我嘗試使用清單,但是我有很多問題需要編譯。它有時會返回9009錯誤,很多錯誤。
所以我的問題是:
1)有可能做到這一點,而不要求用戶的權限?應用程序必須保持沉默。這是真正的問題。如果是這樣的話......
2)如何爲我的應用程序定義清單以管理員身份運行此命令?我想念什麼?這是應用程序的相同標誌?
3)我的應用能否以管理員身份運行這些命令,而不以管理員身份運行?這是一個完美的場景,將使用這個應用程序的用戶不能/不能成爲管理員。
4)這將工作在XP? XP要求UAC? (我不能在XP上測試它,直到我開發一個最低要求版本)
任何類型的想法/解決方案/提示將不勝感激,如果最終不是解決方案,更好的解決方法將標記爲答案(我有個100%速度)
注:
- 我無法通過客戶要求從2.0框架遷移到以上版本。
- 我無法通過客戶端要求將Visual Studio .NET 2005遷移到上述版本。
- 該應用程序需要運行從XP(沒有任何SP)到Windows 7的所有版本
- 是的,我可以使用一個解決方法IF是根據「微軟策略」和應用程序要求(框架2。0,即不從Microsoft不能使用API或類似的東西,器官功能障礙綜合徵/控制/庫)
EDITED:
- 添加鍵的溶液:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers WORKED。
但是,當你運行應用程序,它的提示(與普通UAC提示)的權限
我覺得在回答中寫這個很愚蠢,但我認爲UAC是在那裏彈出並詢問用戶,我非常肯定這是沒有辦法的。 – Akku
看看這可以幫助你:[介紹ConsolR](http://blog.appharbor.com/2012/05/30/introducing-consolr) – lsalamon
請閱讀註釋。 –