大家好,我有一个问题,我需要创建一个可以从服务器上的路径获取一些文件的应用程序,因此如果 PC 上的用户是管理员,则系统工作顺利,但如果用户不是管理员,则系统需要像“运行”一样工作AS...”然后选择管理员用户!!问题是如何强制应用程序以管理员用户身份运行代码?
这是我的代码
private void frmMain_Load(object sender, EventArgs e)
{
if (!IsUserAdministrator())
{
this.Text += " Not Admin";
RunAs("System_Updater.exe", "aMohamady@al-Sadhan.Com", "major@123");
}
else
{
this.Text += " Administrator";
}
}
和
public bool IsUserAdministrator()
{
bool isAdmin;
try
{
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(user);
isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch (UnauthorizedAccessException ex)
{
isAdmin = false;
}
catch (Exception ex)
{
isAdmin = false;
}
return isAdmin;
}
private SecureString MakeSecureString(string text)
{
SecureString secure = new SecureString();
foreach (char c in text)
{
secure.AppendChar(c);
}
return secure;
}
private void RunAs(string path, string username, string password)
{
ProcessStartInfo myProcess = new ProcessStartInfo(path);
myProcess.UserName = username;
myProcess.Password = MakeSecureString(password);
myProcess.UseShellExecute = false;
Process.Start(myProcess);
}
但是当我在非管理员用户中使用此代码时,应用程序启动了很多次?我让 Windows 重新启动以使其停止
请任何人都可以帮助我............