我们正在创建一个C#.net应用程序,该应用程序使用在 C++中开发的.dll文件。它还需要一些由第三方开发的用户控件 (与应用程序捆绑为.dll)。如果我们在 上运行此应用程序,则启用UAC的计算机将按预期执行。但是,如果我们 使用通过Visual Studio部署 项目创建的安装程序进行部署,它会崩溃。如果安装的可执行文件是“作为 管理员”运行。 另外,如果需要管理员权限的清单被添加到 C#可执行文件,它会在安装后正常运行,但是UAC每次运行可执行文件时都会询问 。 是否有东西可以指定始终作为管理员运行 而不必每次都弹出UAC或安装程序更改了这样的 它不需要管理员权限在安装后运行 (因为如果在没有安装的情况下运行应用程序不需要管理员 privilleges)?使用UAC部署C#应用程序
1
A
回答
3
显然,如果没有UAC提示,您将无法以管理员身份运行。这会让恶意软件编写者的生活变得简单。
我怀疑它的安装位置。通常在\ Program Files \下,这也是它的默认工作目录。但是,该程序在非管理员帐户下运行时可能不会写入该程序。 DLL可能试图写入当前工作目录吗?
+0
是的,.dll写入日志文件。 – quake 2011-02-14 16:07:32
0
实际上有一个解决方案。将需要提升的代码递送到Windows服务。你的应用程序然后可以调用你的服务来运行提升的命令(使用WCF,RPC,远程处理或任何你想要的)。
但是你必须要小心:
- 它可以是一个安全漏洞,因为非高架程序可能要求升高一个做的工作。如果您的应用程序包含错误或没有足够的数据检查,可能会很危险。
- 您的服务将始终运行
- 您的服务将以特定的用户身份或内建运行。该进程将无法获得登录用户的身份。如果没有UAC,我认为代表团不会工作。
0
如已回答的,如果应用程序清单中请求管理员权限,则应用程序启动期间无法解决UAC提示。
但是,您可能会使用一种解决方法:在安装期间,为日志文件或文件夹上的每个人设置写入权限。
请注意,这不是一个“干净”的解决方案。相反,你应该改变DLL的代码来登录别的地方。
相关问题
- 1. 使用accord.video.ffmpeg部署应用程序c#
- 2. 部署C#应用程序
- 3. 部署C#应用程序
- 4. 部署使用DirectX程序集的C#应用程序
- 5. 部署简单的C++应用程序
- 6. 在云中部署C++应用程序
- 7. QT - 部署C++应用程序
- 8. 部署Release C#windows应用程序
- 9. 部署C++ QT5应用程序
- 10. 部署c#应用程序问题
- 11. C#Windows应用程序部署
- 12. 部署C#SQLite应用程序
- 13. 部署C#应用程序(混淆)
- 14. 部署应用程序问题(C++)
- 15. C#MVC应用程序部署问题
- 16. linux C++应用程序部署
- 17. 使用外部库的OpenCV C++应用程序部署
- 18. 使用HttpWebRequest部署ClickOnce应用程序
- 19. 使用FTP部署rails应用程序
- 20. 使用CherryPy部署django应用程序
- 21. 使用ClickOnce应用程序部署NLog
- 22. 使用installshield部署应用程序
- 23. 使用AppJS部署应用程序?
- 24. 使用EasyPHP部署Ruby应用程序
- 25. 使用Flexdashboard部署Shiny应用程序
- 26. 使用ECLIPSE部署Web应用程序
- 27. 使用Capistrano部署rails应用程序
- 28. 使用capistrano部署java应用程序
- 29. 使用Docker部署NoneJS应用程序
- 30. 使用JVM部署应用程序
如果您以管理员身份运行并启用UAC,则无法阻止UAC弹出,因为这会挫败UAC的用途。 – AndrewC 2011-02-14 15:56:34
我同意不应该这样,但是我的意思是,如果获得一次许可,那么是否有办法让它记住它是可信的可执行文件? – quake 2011-02-14 16:06:39