Как я могу сказать, работает ли мой процесс как Администратор?

Вы можете union all четыре таблицы и отменить суммы в debittable:

SELECT uid, amt,      dat FROM credittable1 UNION ALL
SELECT uid, amt,      dat FROM credittable2 UNION ALL
SELECT uid, amt,      dat FROM credittable3 UNION ALL
SELECT uid, -1 * amt, dat FROM debittable
32
задан casperOne 5 October 2012 в 11:46
поделиться

1 ответ

Технически, если Вы хотите видеть, является ли участник локальным администратором учетная запись , то можно добраться идентификатор безопасности (SID) из текущего пользователя через User свойство на WindowsIdentity класс , как так (помехи GetCurrent, метод получает текущего пользователя Windows):

WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();

string sid = windowsIdentity.User.ToString();

User свойство возвращает SID пользователя, который имеет много предопределенных значений для различных групп и пользователей .

Затем Вы проверили бы, чтобы видеть, имеет ли SID следующий шаблон, указывая, что это - учетная запись локального администратора (который является известным SID) :

S-1-5- {другие части SID} -500

Или, если Вы не хотите анализировать строки, можно использовать SecurityIdentifier класс:

// Get the built-in administrator account.
var sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, 
    null);

// Compare to the current user.
bool isBuiltInAdmin = (windowsIdentity.User == sid);

Однако я подозреваю, что то, что Вы действительно хотите знать, - то, если текущий пользователь является членом администраторов группа для локальной машины. Можно получить этот SID с помощью WellKnownSidType из [1 110]:

// Get the SID of the admin group on the local machine.
var localAdminGroupSid = new SecurityIdentifier(
    WellKnownSidType.BuiltinAdministratorsSid, null);

Затем можно проверить Groups свойство на WindowsIdentity из пользователя, чтобы видеть, является ли тот пользователь членом локальной группы admin, как так:

bool isLocalAdmin = windowsIdentity.Groups.
    Select(g => (SecurityIdentifier) g.Translate(typeof(SecurityIdentifier))).
    Any(s => s == localAdminGroupSid);
34
ответ дан 27 November 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: