【问题标题】:How i can get user desktop path from windows services?如何从 Windows 服务获取用户桌面路径?
【发布时间】:2019-09-04 12:51:57
【问题描述】:

这是我的代码,如果快捷方式不存在,我需要我的服务为用户桌面上的应用程序创建快捷方式。当我在 Visual Studio 中调试我的应用程序时,它会将快捷方式放在我的桌面上,但是当我在 Windows 上运行服务时,它总是会将快捷方式放在 C 驱动器上而不是我的桌面上。

  private void CreateShortcut()
    {
        object shDesktop = (object)"Desktop";
        WshShell shell = new WshShell();
        //string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        string shortcutAddress = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\CadEisancy.lnk";
        IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
        shortcut.Description = "New shortcut for a Notepad";
        shortcut.Hotkey = "Ctrl+Shift+N";
        shortcut.TargetPath = @"C:\RankWindowsApp\RankWindowsApp\bin\Debug\RankWindowsApp.exe";
        shortcut.IconLocation = @"C:\RankWindowsApp\Icon.ico";
        shortcut.Save();
    }
    protected override void OnStart(string[] args)
    {
        //Create Shortcut On Desktop
        CreateShortcut();
    }

我的代码:

![我的代码][1]

【问题讨论】:

  • 嗨!请将您的代码发布在code 块中,而不是图像。
  • @LexLi 它没有重复。
  • 如果你深入挖掘,你应该明白为什么这个是重复的。 Windows 会话隔离是一个复杂的概念,大多数开发人员都没有意识到,但是每个编写 Windows 服务的人都必须研究它,否则像您这样的问题将得不到回答/解决。链接的线程已经涵盖了必要的背景信息。

标签: c# .net windows-services


【解决方案1】:

解决方案是获取当前登录的用户会话代码,然后根据会话获取他的个人资料名称,最后我们可以指定他的桌面路径。

【讨论】:

    【解决方案2】:

    您的服务是如何配置的?如果您没有在用户帐户下运行,该服务将使用您在输出中看到的自己的配置文件。

    我在下面的外观中回答了大部分类似的答案。如果您觉得有帮助,请查看。

    https://stackoverflow.com/a/46540108/1556780

    【讨论】:

    • 谢谢。解决方法是获取当前登录的用户会话代码,然后根据会话获取他的个人资料名称,最后我们可以指定他的桌面路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2012-06-15
    • 2010-10-12
    相关资源
    最近更新 更多