Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net C#-检测windows功能是否已打开(尤其是windows Media Player)_.net_Windows Media Player - Fatal编程技术网

.net C#-检测windows功能是否已打开(尤其是windows Media Player)

.net C#-检测windows功能是否已打开(尤其是windows Media Player),.net,windows-media-player,.net,Windows Media Player,某些windows功能是可选的,用户可以决定是关闭还是打开。 其中之一是Windows Media Player组件(如下所述) 有没有办法在代码中找出当前是否安装了该软件? 谢谢你的帮助 我尝试了一种方法来比较打开和不打开这些功能时的注册表项。钥匙的数量可能同样足够检查。 这些是最重要的: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\wmplayer.exe HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications

某些windows功能是可选的,用户可以决定是关闭还是打开。 其中之一是Windows Media Player组件(如下所述)

有没有办法在代码中找出当前是否安装了该软件?
谢谢你的帮助

我尝试了一种方法来比较打开和不打开这些功能时的注册表项。钥匙的数量可能同样足够检查。 这些是最重要的:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\wmplayer.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\wmplayer.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AMOVIE.ActiveMovie Control
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WMPlayer.OCX
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MediaPlayer.MediaPlayer
所以实际的C代码应该是

bool windowMediaPlayerAvailable = (Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Classes\MediaPlayer.MediaPlayer") != null);

获取WmiObject Win32|OptionalFeature |在Powershell中选择名称、标题
将列出原因,包括WindowsMediaPlayer(如果可用)。这不是try/catch不能做的事情。如果WMP对程序至关重要,则不要使用try/catch。相反,重点是给出一个好的终止消息,为AppDomain编写事件处理程序。UnhandledException从来都不是可选的。韩国人很了解它,也知道该怎么做。@HansPassant不,重要的不是Windows media player本身。正是Windows media功能允许使用.NET中的某些库。如果没有安装这些功能,代码可以正常工作,但不会播放声音。所以try/catch不行。@romar。谢谢。这也许也能奏效。我现在会坚持注册检查。如果这个解决方案不能100%奏效,我会试试你的。