从C#configuration* .scr文件

我正在C#.Net中创build一个程序,其中一个function允许用户从列表中select一个屏幕保护程序,并进行预览或configuration。 在做了一些研究之后,我发现通过用“/ c”参数调用* .scr文件将显示configuration对话框。

从命令行使用这个参数可以正常工作(“C:\ Windows \ System32> PhotoScreensaver.scr / c”),但是从C#中调用这个参数总是会导致屏幕保护程序被简单地显示,就像刚刚被忽略的参数一样。

我使用的代码是这样的:

Process.Start(ScreensaverPath, "/c"); 

其中ScreensaverPath包含(和包括)* .scr文件的path。

我也试过这个代码,但无济于事:

 Process.Start(ScreensaverPath + "/c"); 

任何帮助将不胜感激。

PS我正在使用Windows 8 Pro,但我需要解决scheme与XP和更新的兼容。

我建议你先创建ProcessStartInfo的实例,设置你的属性,然后将实例传递给Process.Start(instanceOfProcessStartInfo)

我有直接使用Process.Start类似的问题,这是它的解决方案

我不认为直接传递参数将从C#工作。 如果您在开始|运行框中键入c:\windows\system32\sspipes.scr /c ,这也将直接进入屏幕保护程序,不会显示配置屏幕。

我已经能够通过一个cmd文件来做到这一点,所以一个解决方案(虽然不完美)是创建一个cmd文件,其中有一行%1 /c

然后,您可以将屏幕保护程序的路径和文件名传递到cmd文件,这将调出配置屏幕

一些快速和肮脏的VB代码将说明

 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim path As String = "C:\temp\scr.cmd" Dim args As String = "C:\WINDOWS\system32\sspipes.scr" Dim psi As New ProcessStartInfo psi.Arguments = args psi.FileName = path Process.Start(psi) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim app As String = "C:\WINDOWS\system32\sspipes.scr" Process.Start(app) End Sub End Class 

这是一个2个按钮的形式。 Button1调出配置屏幕,按钮2运行屏幕保护程序。 显然你会删除硬编码等,所以请原谅糟糕的编码风格。

您只需要创建一个名为scr.cmd的文本文件,其中包含%1 /c并将其保存到c:\temp