我有一个使用的应用程序 单击一次 进行部署,并且我已设法在用户登录时启动应用程序。

我的问题是我需要应用程序以隐藏方式启动(我不希望用户必须将其最小化,直到他们需要它 - 我希望它位于系统托盘中)。在使用 ClickOnce 之前,我只是检查参数以查看是否传入了“/silent”。在 ClickOnce 应用程序中似乎无法执行此操作(您可以检查是否传入了 URI 查询字符串,但由于这是从 .appref-ms 快捷方式运行,因此似乎无法获取 /silent 争论)

我怎样才能得到 /silent 参数,或者如何判断应用程序是否由于用户登录而启动(而不是用户从快捷方式启动应用程序)?

重要的是,无论提出什么解决方案都不需要管理员权限,但使用的语言并不重要,重要的是我可以将其移植到 .NET。

有帮助吗?

解决方案

我不认为有一个非常干净的方式来做到这一点,因为命令参数不工作,你不能使用查询字符串参数。

然而,尝试用你的ClickOnce部署部署另一个小的可执行文件。这将是负责制定一个“启动”标志(在配置文件,注册表等等),然后启动实际的应用程序。您的应用程序会检查标志,以确定是否应该悄悄推出,然后复位标志。然后,你就只是有小的可执行文件开始使用Windows,而不是主应用程序。

当然,我并没有这条老命了。

其他提示

你可以这样做:

在您的主要方法中:

if ((args.Length > 0 && args[0].ToLower() == "minimized") ||
    (AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null && AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Length > 0 &&
    AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0] == "minimized"))//ClickOnce arguments
{

    //My code to start minimized. My system tray is always visible
    main.WindowState = FormWindowState.Minimized;
    main.Hide();
    main.ShowInTaskbar = false;
}
else {

    //Code to start normally
    main.WindowState = FormWindowState.Normal;
    main.ShowInTaskbar = true;
    main.Show();
}

然后,您只需向 ClickOnce 应用程序传递“最小化”参数即可将其最小化。

为了自动启动我的 ClickOnce 应用程序,我创建了一个如下所示的快捷方式:

CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.Programs) + @"\LVH Tools\MyMiniTools.appref-ms", Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\MyMiniTools", "minimized")

“MyMiniTools”是应用程序的名称,“LVH Tools”是发布者名称。

创建快捷方式:

    public void CreateShortcut(string destinationPath, string shortcutPath, string arguments = "")
    {
        IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();

        shortcutPath = Path.ChangeExtension(shortcutPath, "lnk");

        IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortcutPath);

        shortcut.TargetPath = destinationPath;
        shortcut.IconLocation = destinationPath;
        shortcut.Arguments = arguments;

        shortcut.Description = Path.GetFileNameWithoutExtension(destinationPath);

        shortcut.Save();
    }

使用 ClickOnce 启用自动启动的另一种方法在 ClickOnce 应用程序自动启动和彻底卸载或自定义 ClickOnce 安装的方式.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top