相关疑难解决方法(0)

批处理脚本:如何检查管理员权限

如何检查当前批处理脚本是否具有管理员权限?

我知道如何使用runas调用它自己,而不是如何检查管理员权限.我见过的唯一解决方案是粗暴的黑客工作或使用外部程序.好吧,实际上我并不关心它是否是一个黑客工作,只要它适用于Windows XP及更新版本.

windows cmd admin batch-file

266
推荐指数
12
解决办法
18万
查看次数

如何创建具有较低完整性等级(IL)的新流程?

从Windows Vista开始,具有较低完整性级别(IL)的进程似乎无法向具有更高完整性级别的进程发送消息.从安全角度来看,这是有道理的,但它打破了我们的一些进程间通信.

我们有遗留应用程序(进程A),不幸的是必须以提升的"管理员"权限运行(通过将其快捷方式设置为始终以管理员身份运行来完成).有时它需要实例化一个单独的应用程序(进程B).因此,进程B继承了与进程A相同的提升权限(和IL).这就是问题所在.可能还有其他独立的进程B实例没有提升权限,并且所有这些进程B实例都需要能够相互发送消息.如果进程B的一个实例被提升而另一个实例没有提升,这显然会失败.

我知道我们可以使用ChangeWindowMessageFilterAPI方法在UIPI消息过滤器中打开漏洞,但这似乎不是理想的解决方案.相反,我宁愿让进程A生成具有降低权限的进程B,特别是它可以与其他进程B实例进行通信.我认为默认情况下其他进程B实例运行在"中"IL,因此我希望进程A使用相同的IL生成进程B实例.

我的搜索引导我使用CreateProcessAsUserCreateRestrictedTokenAPI方法,但是尽管有这些文档,令牌和安全描述符的所有各个方面对我来说仍然非常混乱.

我也接触过一些线程这里(运行使用尽可能低的权限的进程中WINAPIWindows上用C删除权限++),但我无法找到任何代码很好的例子.

任何人都可以为我提供一些简单但"正确"的代码,这将帮助我使用适当的Windows IL生成子进程吗?具体来说,我想要一个如何获取现有Process A令牌并将其转换为具有降低权限的示例(我很确定我可以弄清楚其余的).在修改进程'令牌之前,我真的不清楚是否需要复制进程'令牌.

c++ windows security winapi

17
推荐指数
1
解决办法
8633
查看次数

以作为admin运行的进程以用户身份启动进程

我想启动另一个以管理员身份运行的程序运行的程序.

问题是第二个程序需要使用outlook,如果程序以管理员身份运行,这是不可能的.主程序需要以管理员身份运行.

我确实已经提出了这两个解决方案:

Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + Environment.UserDomainName + "\\" + Environment.UserName + " " + "\"SomeProgram.exe" + "\"");
Run Code Online (Sandbox Code Playgroud)

要么

Process.Start("explorer.exe", "SomeProgram.exe");
Run Code Online (Sandbox Code Playgroud)

但我对这两种解决方案都有疑问.第一个询问用户密码(仅在Windows重新启动后第一次).第二个probalby将来不会工作,因为据我所知,它被认为是一个错误,并可能修复了未来的更新.

所以我想知道有没有其他解决方案,用户不需要输入密码?

这似乎对我有用:

Process.Start("cmd.exe", @"/C runas.exe /TrustLevel:0x20000  " + "\"SomeProgram.exe" + "\"");
Run Code Online (Sandbox Code Playgroud)

c# windows uac admin process

5
推荐指数
1
解决办法
3283
查看次数

标签 统计

windows ×3

admin ×2

batch-file ×1

c# ×1

c++ ×1

cmd ×1

process ×1

security ×1

uac ×1

winapi ×1