【问题标题】:How to remove SeDebugPrivilege privilege from .NET application如何从 .NET 应用程序中删除 SeDebugPrivilege 权限
【发布时间】:2018-06-30 17:39:22
【问题描述】:

我正在尝试让我的程序以不需要本地管理权限即可在计算机上运行的方式进行编译。我从 Microsoft 的应用程序兼容性工具包中不断得到的一件事是我的应用程序请求 SeDebugPrivilege。

基本上,我不确定如何/在哪里/何时请求此特权令牌。我正在“发布”中构建应用程序,禁用了 DEBUG 和 TRACE 编译常量,我很好奇调试权限请求是否来自我正在使用的库?

是否有任何简单的方法可以告诉您在 Visual Studio 中如何/何时请求此权限?有没有更好的工具来调试这个?

【问题讨论】:

  • “我从 Microsoft 的应用程序兼容性工具包中不断得到的一件事是我的应用程序请求 SeDebugPrivilege”可能是误报。如果你忽略它怎么办?
  • 当我在具有有限用户权限的虚拟机上运行它时,它仍然要求提升权限。我使用 ACT 试图弄清楚是什么在做这件事,据我所知是调试权限
  • 询问库作者是否used this。或者使用反编译器找回它。

标签: .net vb.net visual-studio


【解决方案1】:

好吧,所以我想使用我从 Visual Studio 中的“构建”操作中获得的应用程序将附带嵌入其中的权限。这意味着第 1 步对我们来说是“发布”而不是“构建”来获取我的可执行文件。

第 2 步有点奇怪,这不是我最初提出的问题。由于我的应用程序在其名称中使用了短语“Updater”,显然这会触发一些 UAC 问题,因为它认为它是一个安装包。 here 的问题让我知道了这一点。在链接的 MSDN 页面之后,我了解到我应该在我的应用程序中包含清单,瞧!

所以,回顾一下:

#1 - 首先发布可执行文件

#2 - 包含清单

没有更多的 UAC。不再有 SeDebugPrivilege

【讨论】:

  • 怎么样?我看到了一些关于生成清单的指南,这不是问题,但没有关于嵌入它
  • 该指南与 C/C++ 相关。据我了解,清单应该自动嵌入到可执行文件中(因为我可以通过使用 7zip 查看我的 exe 来拉出一个),但由于某种原因,WIndows 对此并不满意,并希望我删除 .manifest 文件在运行目录中明确。无论如何,它确实不会改变我的构建过程
  • C# 项目具有相同的设置。
  • 我没有使用 C#;最大的问题是属性中没有“嵌入清单”选项。我认为你必须假设它是自动嵌入的,如果有一个作为项目的一部分。
  • stackoverflow.com/questions/4383288/… 这是一个长期存在的东西,应该适用于所有 .NET 项目类型(尽管 .NET Core 应用程序可能没有)。
猜你喜欢
  • 1970-01-01
  • 2022-08-16
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
相关资源
最近更新 更多