【问题标题】:How to get error messages from NSIS to .NET如何从 NSIS 获取错误消息到 .NET
【发布时间】:2012-10-07 06:39:08
【问题描述】:

我有一个运行 NSIS 文件并执行它们的 .NET 应用程序, 在 Windows XP 上,我遇到了一个问题,就是这个窗口,每次运行文件时都会出现

使用 windows 7 更容易,因为如果 .NET 进程以管理员身份运行,则不会显示该窗口,但在 XP 中却令人头疼, 我只需要解决其中一个问题, 如果我可以阻止这个窗口一直显示? 或者我可以从 NSIS exe 文件中读取它的输出,这样 .NET 就会发现存在问题。

我试过点击取消,它会让.NET抛出一个异常,这很好,我可以处理, 但不删除“保护我的电脑......”上的标记会导致大问题。

这是图片链接: https://docs.google.com/open?id=0B5MtsIuVfrsYT2F1OGZUdHdMSDg

【问题讨论】:

  • 为什么不让您的 .NET 应用程序提示用户在 Windows XP 上获得管理员权限?无论如何,用户应该在 Windows XP 和 Windows 7 上以管理员身份运行您的应用程序,因此您的应用程序应该测试和提示,而不是等待 Windows 执行相同操作。
  • 你在使用 runas 动词吗?
  • @LexLi 感谢您的评论,问题解决了
  • @Anders 是问题所在,谢谢,我在 windows api 中使用了 Is user Admin 功能,非常感谢 :)

标签: c# .net nsis


【解决方案1】:

问题在于 runas 动词, 我们可以删除它,如果它不是以管理员身份运行,我们应该终止程序 我们可以使用这个函数来测试应用程序是否以管理员权限运行

[DllImport("shell32.dll", SetLastError = True)]
return: MarshalAs(UnmanagedType.Bool)
static extern bool IsUserAnAdmin(void);

http://www.pinvoke.net/default.aspx/shell32.IsUserAnAdmin

问候,

【讨论】:

    猜你喜欢
    • 2019-10-28
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多