我一直在将Winforms应用程序移植到WPF,并注意到有关管理权限的以下内容。 应用程序使用'ProcessStartInfo'启动命令行exeternal app作为其执行的一部分。 Winforms应用程序没有应用程序清单并正确运行应用程序。 但是,WPF版本不会正确启动外部应用程序,除非我赋予WPF应用程序管理权限。 ()
我不想这样做,因为有点烦人的UAC确认对话框。 我已经尝试添加'ProcessStartInfo'Verb =“runas”,但这没有效果。
有谁知道为什么Winforms版本没问题,但WPF版本需要管理员权限?仅供参考。外部应用程序处理文件并将输出文件写入programdata目录中的文件夹中
答案 0 :(得分:0)
似乎从Wpf应用程序启动的外部进程无法访问ProgrammData文件夹,尽管父应用程序可以访问。 (是的,我确实需要写入PrgrammData中的文件夹。我有需要使用数据的系统服务,这些服务不了解用户......)
让外部应用程序写入Environment.SpecialFolder.ApplicationData,然后让父应用程序将文件从Environment.SpecialFolder.ApplicationData移动到programdata ...就像在Winforms应用程序中一样工作
答案 1 :(得分:0)
不建议写入程序文件。如果您可以控制这些系统服务,请修改它们以从Environment.SpecialFolder.CommonApplicationData
文件夹中获取数据,此位置不是特定于用户的,并且在整个系统中共享。然后您的可执行文件会将其输出写入Environment.SpecialFolder.CommonApplicationData
。
ProgramData的位置?如果它在Program Files下,那么你的WinForms和WPF应用程序都应该有管理员权限来写入它。