在一些Windows8.1机器上启用拼写检查时,我遇到了一个例外(这两台机器都有最新的更新,OS语言是俄文,.NET框架4.7是俄文),它说:
System.Reflection.TargetInvocationException:调用的目标引发了异常。( MS.Internal.WindowsRuntime.ReflectionHelper.ReflectionNewTArg1 at MS.Internal.WindowsRuntime.Windows.Data.Text.WordsSegmenter..ctor(String language)在MS.Internal.WindowsRuntime.Windows.Data.Text.WordsSegmenter.Create(String语言( CultureInfo shouldPreferNeutralSegmenter)( System.Windows.Documents.WinRTSpellerInterop..ctor() at System.Windows.Documents.SpellerInteropBase.CreateInstance() at System.Windows.Documents.Speller.EnsureInitialized() at System.Windows.Documents.Speller.SetCustomDictionaries(CustomDictionarySources dictionaryLocations,Boolean )在System.Windows.Documents.TextEditor.SetCustomDictionaries(Boolean add)( System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e) )( System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e) ( System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex,DependencyProperty dp,PropertyMetadata元数据,EffectiveValueEntry oldEntry,EffectiveValueEntry& newEntry,Boolean,Boolean coerceWithCurrentValue,operationType operationType) at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp,Object value,OperationType元数据,Boolean,布尔型查询,,布尔),对象值)
此代码可用于再现问题:
var richTextBox = new RichTextBox();
InputLanguageManager.SetInputLanguage(richTextBox,CultureInfo.GetCultureInfo("en-US"));
richTextBox.SetValue(SpellCheck.IsEnabledProperty, true);在调查这个问题时,我发现s_WinRTType.ReflectionNew<string>(language);中抛出了一个异常,其中s_WinRTType描述了"Windows.Data.Text.WordsSegmenter,Windows,ContentType=WindowsRuntime。WordsSegmenter似乎是WinRT组件,所以我看不出里面发生了什么。我想知道它为什么抛出REGDB_E_INVALIDVALUE /它寻找的值是什么,它应该是什么样的?谢谢!“
更新1.我还看到注册表中存在该组件的密钥:

因此,这个组件可能会自行抛出异常。
发布于 2018-04-23 18:24:21
您需要安装语言特性,它通过控制面板或使用DISM与语言包不同。对我来说,这需要.Net 4.7,并且正在为windows 10 build 1709工作(秋季创建者更新)。我不知道这在Windows 8上是否可行。
如果您能够正确地访问windows更新(而不是在WSUS后面),您可以尝试安装它。
Dism /Online //Online
若要检查已安装的功能,请显示所有已安装的选项:
/online /get-capabilities /limitaccess
背景资料:
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/add-language-packs-to-windows
最后一个链接解释了另一个按需特性的版本2。对我来说它解决了一个问题。
使用按需特性isos (从msdn订阅下载它们):
对于windows 10 (不知道windows 8是否可用):en_windows_10_features_on_demand_part_1_version_1709_updated_sept_2017_x64_dvd_100090755 en_windows_10_features_on_demand_part_2_version_1709_updated_sept_2017_x64_dvd_100090754
提取它们并安装:
/packagepath:d:\features\Microsoft-Windows-LanguageFeatures-Basic-en-us-Package.cab /online /
PS:你在谷歌上搜索了REGDB_E_INVALIDVALUE:INVALIDVALUE loading Specific Project
例子:
您可以使用以下代码创建wpf测试应用程序:这将读取可以使用的AvailableInputLanguages。(对我来说,它没有显示.Net 4中的4种语言,只有我用Dism安装的语言。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ComboBox
ItemsSource="{Binding AvailableLanguages}"
SelectionChanged="OnLanguageSelectionChanged"
DisplayMemberPath="NativeName"/>
<TextBox x:Name="textBox" Grid.Row="1"
AcceptsReturn="True"
AcceptsTab="True"
SpellCheck.IsEnabled="True"
Text="Hello world"/>
</Grid>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
AvailableLanguages = new ObservableCollection<CultureInfo>();
foreach (CultureInfo culterInfo in InputLanguageManager.Current.AvailableInputLanguages)
{
AvailableLanguages.Add(culterInfo);
}
DataContext = this;
}
public ObservableCollection<CultureInfo> AvailableLanguages
{
get { return (ObservableCollection<CultureInfo>)GetValue(AvailableLanguagesProperty); }
set { SetValue(AvailableLanguagesProperty, value); }
}
public static readonly DependencyProperty AvailableLanguagesProperty = DependencyProperty.Register("AvailableLanguages", typeof(ObservableCollection<CultureInfo>), typeof(MainWindow));
private void OnLanguageSelectionChanged(object sender, SelectionChangedEventArgs e)
{
CultureInfo xmlLanguage = e.AddedItems[0] as CultureInfo;
textBox.Language = XmlLanguage.GetLanguage(xmlLanguage.Name);
}
}发布于 2020-06-12 02:23:17
尝试如下:启动cmd (以管理员身份运行)
Dism /online /Add-Capability /capabilityname:Language.Basic~~~en-US~0.0.1.0https://stackoverflow.com/questions/49924503
复制相似问题