簡體   English   中英

在C#中調用批處理命令

[英]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.

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