我正在编写一个小型 TaskExplorer,它将所有正在运行的进程保存到 .ini 文件中。 它会在当前用户的桌面上创建一个名为“Überwachung”的文件夹,并以日期为名称保存文件。
我希望该程序在用户登录后启动,但在将当前运行的程序集复制到 Windows 启动时,我不断收到 system.unauthorizedaccessexception
。
这是我的复制代码:
if (!File.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), "ProzessManager")))
File.Copy(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), "ProzessManager"),false);
File.SetAttributes(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), FileAttributes.Normal);
最佳答案
您需要“所有用户的启动”文件夹
using System.IO;
using System.Reflection;
private string pathStartUp = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup);
var exe = Assembly.GetExecutingAssembly().Location;
var destiny = Path.Combine(pathStartUp, Path.GetFileName(exe));
var data = File.ReadAllBytes(exe);
File.WriteAllBytes(destiny, data);
读取和写入主应用程序的所有字节更简单。
编辑:将变量 pathStartUp
更改为使用 GetFolderPath
,因此它甚至可以在 Windows XP 上运行,因为 Windows XP 的启动路径与 Windows Vista/7/8 不同。
关于c# - 如何将当前运行的程序集复制到 Windows 启动项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21764987/