[問題] 使用不同使用者帳戶來執行程式

看板C_Sharp作者 (Jay)時間4年前 (2019/12/20 11:01), 4年前編輯推噓1(1011)
留言12則, 3人參與, 4年前最新討論串1/1
各位大大好,在下目前遇到一個奇怪的情況 系統:Win10 工具:VS2019 因為公司需要做的專案,我已經找到原因(權限問題) 但公司說希望我研究Runas的方式,讓我們直接跟廠商要到一個管理者權限帳號密碼之後 由我們的系統內直接寫好帳號密碼,以不需要去更動客戶端的設定來執行我們系統。 我第一次做這些工具,我先從幾個方向來執行。 先能讓一些系統程式能以不同的身分執行,所以我先做了個簡易的WinForm。 我的環境是一台AD Server,搭配一台Win7。(系統需求一定要AD網域的環境) 主要的需求更動:能讓程式能以不同使用者來執行,如下圖: 我用Runas執行某使用者來執行notepad.exe,並透過工作管理員確認 輸入了4個使用者; Win702、Win70202,是Win7本機的使用者 (Win702是本機管理者,Win70202一般使用者) 另外兩個: ADTest07Admin@TEST07.com RD01@TEST07.com 這兩個都是AD Server的帳戶。 https://imgur.com/nf64XBS
因為我要確認我設定的AD環境沒有問題,透過cmd執行不同使用者,確定可以。 然後我要先寫一個小程式要來釐清使用者帳戶輸入的問題 (密碼我都是設定1~9,只有帳號名稱不同。) 透過這個Winform,輸入使用者名稱,按下按鈕來執行。 程式碼內容: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //新增 using System.Diagnostics; using System.Security; using System.ComponentModel; namespace TestRunAs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private SecureString ConvertStringToSecureString(string pwd) { SecureString password = new SecureString(); foreach (char c in pwd) { password.AppendChar(c); } return password; } private void Button1_Click(object sender, EventArgs e) { //要執行的檔案名稱 string fileName = "notepad.exe"; // 指定要執行程式的使用者名稱 string userName = txb_username.Text; //ADTest07Admin@TEST07.com // 指定要執行程式的使用者名稱密碼,但需要是 SecureString 類別 SecureString password = ConvertStringToSecureString("123456789"); try { // 執行程式 Process.Start(fileName, userName, password, null); } catch (Win32Exception win32Exception) { // 如果使用者名稱或密碼不正確時會丟出 Win32Exception MessageBox.Show(win32Exception.Message.ToString()); } } } } 然後我WinForm設計與執行: 我輸入Win702確定可以 https://imgur.com/J0RSPKA
但我輸入Win70202這個帳戶都會這樣: https://imgur.com/3AJtGlf
其他兩個帳戶也是這樣: https://imgur.com/Cx58NZW
請問是什麼原因壓? 是我帳戶輸入方式錯誤嗎? 我曾改曾這樣輸入: https://imgur.com/oYOWoIV
但還是不行..... 希望有大神可以為我解答~! m( >< ) m ps:再一個狀況,為什麼我WinForm不能夠用具有管理者權限的AD帳戶執行 反而本機帳戶執行卻可以壓?@@ 如下圖: 我這隻程式的路徑與名稱 C:\Users\Win702\Desktop\testrunas\Debug\TestRunAs.exe https://imgur.com/WY9giDf
換另一個帳戶執行卻失敗.... https://imgur.com/vibk70a
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.102.123 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1576810894.A.097.html ※ 編輯: jayzhuang (218.161.102.123 臺灣), 12/20/2019 11:12:01

12/20 17:25, 4年前 , 1F
AD 帳號有 TestRunAs.exe 存取權限?
12/20 17:25, 1F

12/20 17:25, 4年前 , 2F

12/21 09:51, 4年前 , 3F
程式不要放在Win702的桌面,放到D槽或C槽開個新資料夾
12/21 09:51, 3F

12/21 09:54, 4年前 , 4F
自己的桌面其他使用者不會有權限讀和執行,要手動加權限
12/21 09:54, 4F

12/21 16:22, 4年前 , 5F
有使用UI的程式很多情況下會需要在該電腦登入過,在那台
12/21 16:22, 5F

12/21 16:22, 4年前 , 6F
電腦起始過該帳號一些profile後才能動作
12/21 16:22, 6F

12/21 16:24, 4年前 , 7F
Win預設是綁UI、以及帳號。你用要 runas 那個先在那台
12/21 16:24, 7F

12/21 16:24, 4年前 , 8F
用人工登入 xyz 過,產生必要profile檔後。之後用 runas
12/21 16:24, 8F

12/21 16:24, 4年前 , 9F
xyz 就可能可以。
12/21 16:24, 9F

12/21 16:25, 4年前 , 10F
至於不想再每台電腦用人工紹登入過一次產生需要的 profi
12/21 16:25, 10F

12/21 16:25, 4年前 , 11F
le 檔,問G吧
12/21 16:25, 11F
感謝兩位的建議,我測試放到c槽的某新資料夾,然後先測試我做的TESTRUNAS 真的可以耶~! 這點要先筆記~! 目前公司的需求就只要說不可以動客戶端系統設定 但我們可以要一個ad網域的帳戶,我會再繼續測試~! ※ 編輯: jayzhuang (218.161.102.123 臺灣), 12/23/2019 13:51:13

12/26 17:33, 4年前 , 12F
放在特定帳號下,預設權限就不會讓其他帳號存取
12/26 17:33, 12F
文章代碼(AID): #1T_3cE2N (C_Sharp)