2011-07-08 57 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();