2012-05-10 10 views
1

p/invokeの問題が発生している壁にぶつかっています。私はこれをプログラムでC#で行う必要があります。64ビット環境でログオンをサービス権限として確認/付与する方法

+0

アイブ氏は、そこに漂っLSAラッパーを使用してみました、次の2つのリンクで見ることができます。 http://stackoverflow.com/questions/1286795/c-how-to-programmatically-grant-user-log - サービスとして - http://www.codeproject.com/Articles/4863/LSA-Functions-Privileges-and-Imersonation 私はまた、次のリンクに記載されている方法を試してみました。各グループポリシーに属するユーザーが表示されますが、ユーザーがリストされないため、ユーザーがLSAを持つグループのメンバーである場合は役に立ちません。 http://david-homer.blogspot.com/2012/03/audit-and-document-security-user-rights.html – mzachen

+0

申し訳ありませんが、最後のコメントが役に立ったら教えてください... – mzachen

答えて

0

私は数週間前にp/invoke stuff(LSAラッパー付き)をやりました。ラッパーを初めて実行したときに例外が発生しましたが、2回目のWin2k8サーバー64ビットで成功しました。このような

何かが、それが二度目に働いていた、なぜ我々はそれがすべての当社のサーバーに取り組んで得たので

try{ 
    DoThePInvokeMagic(); 
} 
catch(Exception){ 
    // Sometimes the first invocation fails, but the second time it seems to work  
    DoThePInvokeMagic(); 
} 

は、残念ながら私たちは、これがなぜ起こったか、さらに調査するための時間/ PRIOを持っていなかった私のために働きました。

+0

うわー。あなたは正しい、それは最初の試行で失敗し、2回目に通過する。私はそのヒントに感謝しています。私はなぜ時間を費やし、うまくいけばあなたに戻ってきます。 – mzachen

+0

私が別にしたことの1つは、再帰を避けてエラーカウンタを追加したことです。 LSA/PInvokeコードに何か他のエラーがあった場合は、無限ループにぶつかるだろうと考えています。これをチェックしてください: 'catch(Exception ex) { errorCount = errorCount + 1; if(errorCount> 1) { MessageBox.Show(ex.Message); } else { goto restart; } } ' – mzachen

関連する問題