如何在UAC对话框中以已发布用户身份运行c#应用程序

假面

会员
已加入
2020年11月30日
留言内容
16
编程经验
1-3
您可以从没有管理员权限的程序文件中读取。

您无需管理员即可更改时区。当现代Windows实际上与使用原子钟来保持时间的NTP服务器同步时,您真的需要更改时间吗?

正确的做法是仅在尝试执行需要管理员权限的操作时才获取UAC。您不想一直以管理员身份运行。通过始终以管理员身份运行,可以打开病毒的攻击面。病毒只需要将自身注入应用程序即可,而不是试图将自身注入其他由AV软件和/或Windows Defender进行更积极监视的已知应用程序/进程。

请遵循有关UAC的Windows准则:
你好。
感谢您的帮助。
我使用流程参考而不是requireAdministrator excutionLevel使c#应用程序以管理员身份运行。因此,我的应用程序在启动时运行,我可以编写文件并更改系统时间。
顺便说一句,我的应用程序现在仍然存在一些问题。看来是UAC问题。
每当我的应用在Windows 10 64bit上启动时,"未知的发行商..." 信息 popup now.
I attached the 信息 screen now. If I set UAC level to lowest(never notify) in UAC setting, I never get this 信息 but I want to keep the level and prevent this 信息.
您可以在此部分帮助我吗?
 

附件

  • 2021-01-07_00h33_28.png
    2021-01-07_00h33_28.png
    44.2 KB · 观看次数 : 3
Solution
我现在知道了。您在该线程或原始线程中都没有提到您的应用程序将在离线PC上运行,并且永远不会在线同步。我们应该如何确定您在Windows 10上运行的现代应用程序中具有1990年代的风格限制?

无论如何,所以我猜想您希望能够设置时间的原因是由于机器已锁定,因此您希望用户可以在时钟确实漂移时更新时间,而不必输入UAC对话框所需的管理员密码。

我的建议是将您的应用分为两部分。部件以安装后的Windows服务运行,并以系统权限运行,或者以具有管理员权限的用户身份运行。视窗...

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,423
位置
弗吉尼亚州切萨皮克
编程经验
10+
就像在Web开发中,当您回调到后端(通常使用Web服务调用)以对数据库进行写入或读取操作时,台式机应用程序会发生同样的事情。对于Web开发,您不希望数据库凭据位于前端。您不希望您的数据库暴露给世界。您将数据库保留在防火墙后面,并且拥有一个Web服务,该Web服务可以使用应该(希望)仅安全地位于Web服务中的数据库凭据来回退到防火墙后面。您的非高架应用程序是前端。 Windows服务是您的后端。您需要向后端发送一条消息。

从一个简单的Windows服务开始,该服务仅等待文件作为您的文件存在。"message"为它做某事。一旦工作正常,就让服务实际读取文件的内容以确定它是否应该执行某些操作。一旦工作成功,就制定一种身份验证方案,以确保万无一失的用户发现您正在使用文件作为传输工具时,没人能欺骗您的服务执行某些操作。然后过渡到使用其他一些传输方式,例如命名管道,TCP端口或共享内存。

 

假面

会员
已加入
2020年11月30日
留言内容
16
编程经验
1-3
就像在Web开发中,当您回调到后端(通常使用Web服务调用)以对数据库进行写入或读取操作时,台式机应用程序会发生同样的事情。对于Web开发,您不希望数据库凭据位于前端。您不希望您的数据库暴露给世界。您将数据库保留在防火墙后面,并且拥有一个Web服务,该Web服务可以使用应该(希望)仅安全地位于Web服务中的数据库凭据来回退到防火墙后面。您的非高架应用程序是前端。 Windows服务是您的后端。您需要向后端发送一条消息。

从一个简单的Windows服务开始,该服务仅等待文件作为您的文件存在。"message"为它做某事。一旦工作正常,就让服务实际读取文件的内容以确定它是否应该执行某些操作。一旦工作成功,就制定一种身份验证方案,以确保万无一失的用户发现您正在使用文件作为传输工具时,没人能欺骗您的服务执行某些操作。然后过渡到使用其他一些传输方式,例如命名管道,TCP端口或共享内存。

您是说我应该将Winforms应用程序创建或更改为Windows Service应用程序?
如果是这样,我现在没有足够的时间来更改我的应用程序开发架构。仅在需要以普通用户身份运行应用程序期间进行更改时,才需要更改系统时间的方法。
您能否解释一下如何通过保持当前应用结构来更改时间设置?
谢谢。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,423
位置
弗吉尼亚州切萨皮克
编程经验
10+
No. I was saying that you need to create a simple Windows service and move the code that actually sets the time there. Then from your current app, send a 信息 to the service so that it will set the time.
 

假面

会员
已加入
2020年11月30日
留言内容
16
编程经验
1-3
No. I was saying that you need to create a simple Windows service and move the code that actually sets the time there. Then from your current app, send a 信息 to the service so that it will set the time.
你好。谢谢你的时间。
我试图为时间设置提供其他服务,并将该服务链接到主应用程序中,但尚未解决。也许因为我基本上是这个桌面应用程序开发人员,所以我应该学习很多东西。
但是,很高兴与您在一起,并在这个社区中向您学习。
我会尝试自己做一次,但是如果您有空闲时间,我希望您随时提供帮助。
再次感谢你。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,423
位置
弗吉尼亚州切萨皮克
编程经验
10+
不,您不会将其链接到主应用程序。您最终将部署两个可执行文件:您的主应用程序和服务。您安装服务以特权帐户运行,并安装主应用程序以普通用户身份运行。
 
最佳 底部