2012-10-09 38 views
0

使用的Process.Start我試圖導出一些註冊表項,通過使用下面的代碼路徑spath創建的文件移動值,但它不工作,任何機構可以告訴我是什麼是錯在這裏如何使用的Process.Start從註冊表

rk = @HKEY_LOCAL_MACHINE\software\test\sim 
File.Create(Path.Combine(spath, m_samview) + ".rtt"); 
Process ps1 = Process.Start("/C regedit.exe /e spath\\m_samview.rtt rk"); 
     ps1.WaitForExit(); 
     ps1.Close(); 

我檢查鏈接proces.start根據我做這項工作

+0

定義「不工作」 ... –

+0

好像它會更容易,只需使用專用類操作註冊表 –

+0

@SimpleCoder我不想要任何專用類,我只是想觸發外部程序和做任務 – vettori

回答

0

用的Process.Start您可能需要提供完整的文件路徑。嘗試指向\ SYSTEM32 \ REGEDIT.EXE而不僅僅是REGEDIT.EXE

+0

的systax我沒有這種方式處理PS1 =的Process.Start( 「/ C REGEDIT.EXE/E SPATH \\ m_samview.rtt RK」);但沒有運氣。其實這裏我的文件名是m_samview屬性。 – vettori

+0

爲什麼不使用Process.Start(文件名,參數)。確保文件名是指向完整的文件路徑 – Srini

1

你直接在帖中使用SPATH?兩件事情來嘗試

  • 格式的命令,以便SPATH變量被解析成實際路徑字符串
  • 如果路徑中有空格,請報價

例內封閉它(與文件名) :

string processString = string.Format("/C regedit.exe /e \"{0}\\m_samview.rtt\" rk", spath); 
Process ps1 = Process.Start(processString); 
+0

蘇達瑪我用鏈接http://jpreece.wordpress.com/csharp/how-to-export-a-registry-key/,但現在我得到錯誤無法導出' ''''打開文件時出錯。可能有磁盤或文件系統錯誤。你能告訴我什麼原因 – vettori

+0

現在我們正在得到非常具體的,我真的不能幫助。我建議你調試代碼並獲取進程字符串,在命令行中手動分析和運行它。根據那篇博客文章 –

+0

我正在糾正的Sudama將它與字符串/輸出相比較。這有點棘手,因爲File.Create()已經創建了文件,並且這個代碼將要創建,這就是原因。我刪除了file.creat併成功運行 – vettori