.NET模拟无法正常工作

时间:2018-08-15 16:14:53

标签: c# .net windows

我正在使用https://github.com/mj1856/SimpleImpersonation来模拟管理员,因此我可以通过非管理员用户运行的应用程序对Windows服务进行更改。这可以在Windows 7上正常运行。在Windows 10上,我必须右键单击该应用程序,然后单击以管理员身份运行才能运行。否则,当我的应用尝试修改服务时,我将收到错误代码5(拒绝权限)。模仿似乎正在工作。 UAC已关闭。我不知道下一步该怎么做。

3 个答案:

答案 0 :(得分:0)

您尚未发布任何您的代码,因此我将在此处进行有根据的猜测,并建议您尝试LogonType.NewCredentials。这将使LogonUser调用缓存凭据,以便稍后将其用于模拟。

答案 1 :(得分:0)

之所以不起作用,是因为我打开了UAC。我已经在Windows中禁用它并重新启动,但是显然这还不够。我必须创建注册表项

var tabTriggerBtns = document.querySelectorAll('.tabs li button');

tabTriggerBtns.forEach(function(tabTriggerBtn, index){
  tabTriggerBtn.addEventListener('click', function(){
    var tabTrigger = this;
    var tabTriggerData = tabTrigger.getAttribute('data-tab-trigger');
    var tabContent = document.querySelector('.tab-content');
    var currentTabData = document.querySelector('.tab-content[data-tab-content="' + tabTriggerData + '"]').classList.add('is-open');

    if(tabContent !== currentTabData) {
      tabContent.classList.toggle('is-open');
    }

    if(tabTrigger.classList.contains('is-active')) {
      tabTrigger.classList.remove('is-active');
    }
    else {
      tabTriggerBtn.classList.remove('is-active');
      tabTrigger.classList.add('is-active');
    }   
  });
});

然后重新启动以真正禁用UAC。

作为对其他开发人员的说明,我无法使用c#进行模拟,但也无法使用powershell和psexec进行模拟,这使我找到了解决方案{{3}}。

答案 2 :(得分:0)

SimpleImpersonation(我是作者)是the Windows LogonUser API的托管包装。它本身没有任何魔术,而是可以帮助您轻松使用该API。

使用此库时,您传递的LogonType与LogonUser文档中引用的匹配。每种登录类型都有不同的行为,该行为由操作系统控制。例如,如果您使用的是LogonType.Interactive,那就是将LOGON32_LOGON_INTERACTIVE传递到LogonUser API中以执行交互式登录。

交互式登录使用UAC进行管理操作。建议禁用它。同样不是LogonUser在交互式会话期间返回 restricted 令牌。对于交互式登录,您无法解决该问题,但可以根据自己的操作尝试其他登录类型之一。

另请参阅: