C# 创建具有管理员权限的流程最安全的方法是什么?

C# 创建具有管理员权限的流程最安全的方法是什么?,c#,windows,security,C#,Windows,Security,我有一个服务器,它使用CreateProcess函数来启动需要管理权限的客户端程序。我对此犹豫不决,因为黑客所要做的就是将他们的程序hacker.exe替换到与我的客户端程序相同的位置,并将其命名为totalysaffect.exe,我的服务器将以管理权限启动该程序 我正在考虑使用来计算totalysafeclient.exe的散列,以确定它是否确实是它所说的那样。想法?经过一些额外的研究后,使用是一个非常糟糕的选择,因为Windows已经有一个内置的涉及RSA加密的机制,称为。通过对代码进行签

我有一个服务器,它使用CreateProcess函数来启动需要管理权限的客户端程序。我对此犹豫不决,因为黑客所要做的就是将他们的程序
hacker.exe
替换到与我的客户端程序相同的位置,并将其命名为
totalysaffect.exe
,我的服务器将以管理权限启动该程序


我正在考虑使用来计算
totalysafeclient.exe的散列,以确定它是否确实是它所说的那样。想法?

经过一些额外的研究后,使用是一个非常糟糕的选择,因为Windows已经有一个内置的涉及RSA加密的机制,称为。通过对代码进行签名,用户可以知道代码来自何处,以及代码是否被篡改


是一个比CreateProcessAsUser更好的选择,因为它可以通过使用UAC处理
ERROR\u ELEVATION\u REQUIRED
异常。大多数用户和开发人员都不喜欢(也许现在仍然如此)Vista发布这一功能,但我强烈建议您关注UAC的项目负责人和系统架构师在哪里解释为什么需要它,以及它是如何提高安全性的

如果它加载了一个DLL呢?特别是如果它可以从当前目录加载DLL?为什么不将
totallysafeclient.exe
放在文件系统的一部分(如程序文件),只有管理员才能修改它?没有安全的方法。UAC的工作是确保其安全。启动的程序必须具有包含“requireAdministrator”的清单或使用runas谓词。用户必须批准并提供管理员凭据。AdobeARM.exe存在于程序文件中,因此,如果黑客可以更改它,则他们可以。但我不确定这和你的情况有什么关系。你的威胁模型是什么?(如果你正在下载文件,你当然应该在运行之前检查数字签名。但这似乎不是你要问的。)