我將C#應用程序設置爲通過註冊表啓動時自動運行。 的問題是,當:C#自動運行問題
Environment.CurrentDirectory //returns C:\Windows\System32
取而代之的是文件的實際位置。 爲什麼會導致這種情況,並有其他選擇嗎?
進出口使用 'HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \當前版本\運行'
我將C#應用程序設置爲通過註冊表啓動時自動運行。 的問題是,當:C#自動運行問題
Environment.CurrentDirectory //returns C:\Windows\System32
取而代之的是文件的實際位置。 爲什麼會導致這種情況,並有其他選擇嗎?
進出口使用 'HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \當前版本\運行'
CurrentDirectory
是不是你的程序的位置;它的文件夾,該方案是在開始(雖然它以後可以更改)
你要找的Path.GetDirectory(typeof(YourType).Assembly.Location)
嘗試System.Windows.Forms.Application.StartupPath
我不知道是什麼問題,但你可以隨時更改使用currentDirectory爲您的應用如下:
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
當我創建的窗口在C#中的啓動自動運行,我用下一個指令,讓我的可執行文件的路徑:
System.Windows.Forms.Application.ExecutablePath.ToString();
不,它不是應用程序啓動的文件夾,在實踐中進行了測試,發現它是可變的,例如:如果通過OpenFileDialog在'c:\\ folder'中打開文件,新的工作目錄將會是'c:\\文件夾'。沒有測試過你的答案,但'CurrentDirectory'絕對不可靠 – Djole
+1或http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getexecutingassembly.aspx – kenny
@SSK:是, 它是。 FileDialogs將更改當前目錄,除非配置爲不。 – SLaks