最近、Lenovo ideapad MIIX 700 80QL006FJP [シャンパンゴールド] というパソコンを買いました。
レノボを安く買えるクーポンはコチラ↓
OS は、Windows 10 Homeです。
このパソコン、最初、ひとつのアカウントで使っているときは快調でした。
しかし、以下の方法を使って、複数アカウントで同時ログインするようにしました。
複数アカウントで使い始めると、そのうち、Rundll32.exe というプロセスが4個作られて、それぞれのプロセスが、CPU25%ずつ使い、結果としてシステムのCPU負荷が100%になってしまい、動作がもっさりとしてしまいます。
これは何故なんでしょうか?
解決方法を調べてみました。
目次
Windows ホストプロセス Rundll32.exe って何?
Windows画面の右下の時計辺りで右クリックを押して、コンテキストメニューからWindowsのタスクマネージャーを開きます。
このCPU 負荷を圧迫している Rundll32.exeって何なんでしょうか?
調べてみました。
「rundll32.exe」というのは、Windowsが提供している実行ファイルで、DLLの中にある関数を呼び出すことが出来ます。
使い方としては、
1 |
rundll32.exe [DLLファイル名], [関数名] [引数] |
の書式で指定することでDLL内の関数を呼び出すことが出来ます。
例えば、コマンドプロンプト上で
1 |
rundll32.exe user32.dll, LockWorkStation |
と実行すると画面がロックされます。
これは「user32.dll」の中の関数「LockWorkStation」が実行された結果です。
Windowsのタスクマネージャーで、rundll32.exe が見つかった場合、今、動いているプログラムの中のどれかが「rundll32.exe」経由のDLL呼び出しを行っていて、それが原因で「rundll32.exe」のプロセスが出来てるってことになります。
正規の「rundll32.exe」は
1 |
C:¥Windows¥System32¥rundll32.exe |
や
1 |
C:¥Windows¥SysWOW64¥rundll32.exe |
にあります。
ちなみに、このファイルを狙ったウィルス、マルウェアはよくあるようです。
Windowsホストプロセス(Rundll32)は
Windowsカスタマーエクスペリエンス向上プログラム が原因?
いろいろと調べてみると、Windowsホストプロセス Rundll32.exe のCPU負荷の原因は、「Windowsカスタマーエクスペリエンス向上プログラム」だと書いてあるサイトもありましたが。
「Windowsカスタマーエクスペリエンス向上プログラム」を無効にする方法は次の通りです。
1. タスクスケジューラーを起動します。
「Windows キー」+「R」で表示される
“ファイル名を指定して実行” に
「taskschd.msc」と入力すれば実行できます。
2. Customer Experience Improvement Program
→「タスクスケジューラライブラリ」
→「Microsoft」
→「Windows」
→「Customer Experience Improvement Program」
とたどりタスクを表示させます。
3. 表示されたタスクをすべて無効にします。
Consolidator
KernelCeipTask
UsbCeip
ただ、私の場合、この方法では、CPU負荷100%の問題は解決しませんでした。
Windowsホストプロセス (Rundll32) を使っているプログラムを特定する
Windows ホストプロセス (Rundll32) を使っているプロセスを特定します。
これには、マイクロソフトが提供している Process Explorer v16.21 を使います。
から、zip形式のプロセスエクスプローラーをダウンロードして展開します。
Process Explorerは、インストールする必要がありません。ダウンロードしたzipファイルを展開して、64bitの場合、x64のプログラムを実行するだけでOKです。
rundll32.exeの近くにマウスカーソルを近づけると、コマンドラインが、以下のように表示されました。
どうやら、Lenovo が提供している EnableAutoRotation.dll の RunCustomMonitor が実行されているので、これが原因のようです。
確かに、
C:\ProgramData\LenovoTransition\Server\x64\EnableAutoRotation.dll
というファイルが存在しますね。
ネットを探すと同じ現象を見つけました。
I have an issue with my YOGA 700 laptop when logged in multiple accounts simultaneously. Whenever an account is left logged on and the user is switched as opposed to logging off, the cpu usage ramps up very high with several RUNDLL32 processes being the culprit. I have checked the RUNDLL32 processes with Process Explorer and the command line are as follows:
C:\Windows\system32\rundll32.exe C:\ProgramData\LenovoTransition\Server\x64\EnableAutoRotation.dll,RunCustomMonitorThe directory is as follows:
C:\ProgramData\LenovoTransition\Server\x64\
たぶん、これも同じ問題か。
Hey, i have the issue also on my yoga 900.
There are 4x child rundll32 processes created from ymc.exe (Yoga Mode Control) which goes crazy when two or more users logged in.
Every proccess uses 25% which results in 100% cpu load!
解決策:Lenovo Yogaモードコントロール、 ymc.exe (Yoga Mode Control) を新しくする?
解決策の一つとして、ymc.exeの自動起動そのものを止めてしまうというのがありますね。
ymc.exeの自動起動を止めるには、「システム構成」を起動します。
「Windows キー」+「R」で表示される
“ファイル名を指定して実行” に
「msconfig」と入力すれば、「システム構成」が起動します。
「サービス」を見てみると「ymc」にチェックが入っていて自動起動するのが分かります。
このチェックを外すと自動起動しなくなります。
ただ、一方、このサービスを止めてよいのかどうか悩みました。
他を調べてみると、Lenovo Yogaモードコントロール、 ymc.exe (Yoga Mode Control) を最新にすると、この rundll32.exeのCPU 100%現象が改善するようなことも分かりました。
以下のファイルをダウンロードしてインストールします。
Windows 10 (64ビット)
2.0.0.9
2016/12/30
ここから、ymc2.0.0.9.exe をダウンロードしてインストールして、パソコンを再起動してみました。
すると、なんと、以下のフォルダが綺麗に消えていました。
C:\ProgramData\LenovoTransition
多分、これで問題が解決したのでしょう。
コメント