2011-07-08 61 views
1

我将C#应用程序设置为通过注册表启动时自动运行。 的问题是,当:C#自动运行问题

Environment.CurrentDirectory //returns C:\Windows\System32 

取而代之的是文件的实际位置。 为什么会导致这种情况,并有其他选择吗?

进出口使用 'HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \当前版本\运行'

回答

2

CurrentDirectory是不是你的程序的位置;它的文件夹,该方案是在开始(虽然它以后可以更改)

你要找的Path.GetDirectory(typeof(YourType).Assembly.Location)

+0

不,它不是应用程序启动的文件夹,在实践中进行了测试,发现它是可变的,例如:如果通过OpenFileDialog在'c:\\ folder'中打开文件,新的工作目录将会是'c:\\文件夹'。没有测试过你的答案,但'CurrentDirectory'绝对不可靠 – Djole

+0

+1或http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getexecutingassembly.aspx – kenny

+0

@SSK:是, 它是。 FileDialogs将更改当前目录,除非配置为不。 – SLaks

0

尝试System.Windows.Forms.Application.StartupPath

2

我不知道是什么问题,但你可以随时更改使用currentDirectory为您的应用如下:

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; 
0

当我创建的窗口在C#中的启动自动运行,我用下一个指令,让我的可执行文件的路径:

System.Windows.Forms.Application.ExecutablePath.ToString();