2017-12-14 11 views
1

私はコンソールアプリケーションを割り当てられたアクセス(Windows 10のキオスクモード)でバックグラウンドで実行しています。メインのUWP-appからのコマンドで、現在のユーザーをログオフする必要があります。現在のユーザーがパスワードを持っている場合の両方がうまく機能Windows 10のアクセス権:プログラムによるログアウト方法

  • WinAPIの機能ExitWindowsEx(0, 0)
  • Process.Start("shutdown /l /f")

:私はこれを行うには2つの方法を試してみました。しかし、ユーザーにパスワードがない場合、Windowsはログアウト直後に再ログインします。再ログインを避ける方法はありますか?

更新: LockWorkStationのように見えますが動作しません。セキュリティ上の理由から可能でしょうか?

答えて

0

ありがとうございます。コメントの回答は@ magicandre1981と一致しています。彼の答え:

try thisコールの代わりのExitWindows

これは私のために動作します。

0

は、現在のユーザーオフこの

ログインをお試しください。

ExitWindows(0, 0); 
ExitWindowsEx(EWX_LOGOFF, 0); 
ユーザー相互作用を

アプリケーションは、WM_QUERYENDSESSIONメッセージを受信し、セッションを終了するためにOKであるかどうかを尋ねるダイアログボックスが表示されます。ユーザーがはいをクリックすると、システムはユーザーをログオフします。ユーザーがNoをクリックすると、ログオフがキャンセルされます。

case WM_QUERYENDSESSION: 
{ 
    int r; 
    r = MessageBox(NULL,(LPCWSTR)L"End the session?",(LPCWSTR)L"WM_QUERYENDSESSION",MB_YESNO); 

    // Return TRUE to continue, FALSE to stop. 

    return r == IDYES; 
    break; 
} 
+0

私はUWP&consoleがC#で書かれています。 '' 'ExitWindowsEx'''は、割り当てられたアクセスモードでは正しく動作しません。 – FiftiN

2

Raymond Chen from Microsoftによれば、これは不可能です。

UWPアプリケーションは、ユーザーがサインアウトまたはワークステーションをロックすることはできません。その は、ちょうどループの中で ワークステーションをロックしたアプリケーションからのサービス拒否を招くでしょう。あなたのクライアント/サーバーで

はUWPアプリはsuggested hereとして、デスクトップアプリケーションでWTSDisconnectSession()コールをしようと接近し、デスクトップアプリケーションに要求を送信しました。

+0

私はそれを知っています。そして、私は自分のアプリを2つに分けた:UWPアプリとデスクトップコンソールアプリ。 WCFを介して通信します。ユーザーがUWP-appの「ログアウト」ボタンを押すと、ConsoleWizardへのリクエストが '' 'ExitWindowsEx(0、0)' ''を実行します。 正常に動作しますが、割り当て済みアクセスモードでは機能しません。 ExitWindowsの代わりに – FiftiN

+1

[この電話をかけてください](https://stackoverflow.com/a/14467587/1466046) – magicandre1981

+0

他のコールはキオスクモードで動作しますか? – magicandre1981

関連する問題