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

作者: jayzhuang (Jay)   2019-12-20 11:01:30
各位大大好,在下目前遇到一個奇怪的情況
系統:Win10
工具:VS2019
因為公司需要做的專案,我已經找到原因(權限問題)
但公司說希望我研究Runas的方式,讓我們直接跟廠商要到一個管理者權限帳號密碼之後
由我們的系統內直接寫好帳號密碼,以不需要去更動客戶端的設定來執行我們系統。
我第一次做這些工具,我先從幾個方向來執行。
先能讓一些系統程式能以不同的身分執行,所以我先做了個簡易的WinForm。
我的環境是一台AD Server,搭配一台Win7。(系統需求一定要AD網域的環境)
主要的需求更動:能讓程式能以不同使用者來執行,如下圖:
我用Runas執行某使用者來執行notepad.exe,並透過工作管理員確認
輸入了4個使用者;
Win702、Win70202,是Win7本機的使用者
(Win702是本機管理者,Win70202一般使用者)
另外兩個:
[email protected]
[email protected]
這兩個都是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;
//[email protected]
// 指定要執行程式的使用者名稱密碼,但需要是 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帳戶執行
反而本機帳戶執行卻可以壓[email protected]@
如下圖:
我這隻程式的路徑與名稱
C:\Users\Win702\Desktop\testrunas\Debug\TestRunAs.exe
https://imgur.com/WY9giDf
換另一個帳戶執行卻失敗....
https://imgur.com/vibk70a
作者: kyrc (橘子)   2019-12-20 17:25:00
AD 帳號有 TestRunAs.exe 存取權限?https://i.imgur.com/hEtcNWN.jpg
作者: rexhuang (BlueCancer)   2019-12-21 09:51:00
程式不要放在Win702的桌面,放到D槽或C槽開個新資料夾自己的桌面其他使用者不會有權限讀和執行,要手動加權限
作者: cancelpc (阿吉)   2019-12-21 16:22:00
有使用UI的程式很多情況下會需要在該電腦登入過,在那台電腦起始過該帳號一些profile後才能動作Win預設是綁UI、以及帳號。你用要 runas 那個先在那台用人工登入 xyz 過,產生必要profile檔後。之後用 runasxyz 就可能可以。至於不想再每台電腦用人工紹登入過一次產生需要的 profile 檔,問G吧

Links booklink

Contact Us: admin [ a t ] ucptt.com