[英]Calling batch commands in C#
對於C#來說,這是非常新的東西,它創建了一個小型exe,它將在啟動時為用戶啟動,為他們提供一些選項,連接到終端服務器,進行管理(將受到密碼保護。。):)並退出。
現在進行管理,我想以另一個用戶身份啟動任務管理器,所以我的想法是使用runas
調用cmd.exe
並啟動它。 但是,我運氣不太好,下面的代碼僅啟動cmd.exe
但沒有我指定的參數。
private void btnAdministration_Click(object sender, EventArgs e)
{
ProcessStartInfo processAdmin;
processAdmin = new ProcessStartInfo();
processAdmin.FileName = "C:\\Windows\\system32\\cmd.exe";
processAdmin.Arguments = "runas /user:admin C:\\Windows\\System32\\taskmgr.exe";
Process.Start(processAdmin);
}
試試看:
private void btnAdministration_Click(object sender, EventArgs e)
{
string password = "userpassword";
SecureString secureString = new SecureString();
foreach(char chr in password) secureString.AppendChar(chr);
ProcessStartInfo processAdmin;
processAdmin = new ProcessStartInfo();
processAdmin.UseShellExecute = false;
processAdmin.Password = secureString;
processAdmin.UserName = "admin";
processAdmin.FileName = "taskmgr.exe";
processAdmin.WorkingDirectory = "C:\\Windows\\System32";
Process.Start(processAdmin);
}
MSDN對此有何評論:
建議使用ProcessStartInfo對象設置Domain,UserName和Password屬性,以使用用戶憑據啟動進程。
注意:
不建議將密碼放在字符串上,因為這可能是安全問題
嘗試執行runas.exe
ProcessStartInfo processAdmin;
processAdmin = new ProcessStartInfo();
processAdmin.UseShellExecute = false;
processAdmin.FileName = "runas.exe"
processAdmin.Arguments = "/user:Administrator \"c:\\Windows\\System32\\taskmgr.exe\""
Process.Start(processAdmin);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.