Archive for February, 2013

ファイル権限デザイナーで使用しているNet系APIについての解説

はじめに ファイル権限デザイナーはC#で作成されていますが、ファイル権限の操作のところ .NETのライブラリーだけでは難しいので、重要な機能はAPIで作成されております。その一例を紹介します。 今回はNetAPI系を説明します。 ユーザを追加するときに、ユーザ一覧が必要ですが、まず、対象のファイルを管理している、PCがドメインコントローラか、スタンドアローンサーバか、ワークステーションか判断する必要があります。それにより、ドメインコントローラからユーザ一覧を取得したり、サーバローカルのユーザからユーザ一覧を取得したり制御しています。 ファイル権限デザイナーで使用しているNetAPIの一部 //NetUserChangePassword ユーザーのパスワードを変更 //NetUserGetGroups ユーザーが属しているグローバルグループのリストを取得 //NetUserGetInfo ユーザーアカウントに関する情報を取得 //NetUserGetLocalGroups ユーザーが属しているローカルグループのリストを取得 //NetUserSetGroups アカウントに対するグローバルなグループメンバの資格を設定 //NetUserSetInfo ユーザーアカウントのパラメータを設定 //NetUserModalsGet すべてのユーザーとグローバルなグループのグローバルな情報を取得 //NetUserModalsSet すべてのユーザーとグローバルなグループのグローバルな情報を設定 //NetLocalGroupAdd ローカルグループを作成 //NetLocalGroupAddMembers ローカルグループに既存のアカウントまたはグローバルグループのメンバの資格を与える //NetLocalGroupDel ローカルグループアカウントとそのすべてのメンバを削除 //NetLocalGroupDelMembers 特定のローカルグループからメンバを削除 //NetLocalGroupEnum ローカルグループアカウントに関する情報を取得 //NetLocalGroupGetInfo サーバー上の特定のローカルグループアカウントに関する情報を取得 //NetLocalGroupSetInfo ローカルグループアカウントのパラメータを設定 //NetShareAdd //NetShareDel //NetShareEnum //NetShareGetInfo //NetShareSetInfo using System; using System.Text; using System.Runtime.InteropServices; using System.Diagnostics; using System.Collections; using System.Collections.Generic; namespace Cadree.Common.Object { public class CaD_API_NetApi32 { //——————————————————————————————————————– // GetServerNameFromFQN //——————————————————————————————————————– static private STRUCT_strServerName_Original GetServerNameFromFQN(string strFQN) { STRUCT_strServerName_Original strServerName_Original; strServerName_Original.value = “”; if (strFQN != “”) { if (strFQN.Substring(0, CAD_String.YENYEN.Length) == CAD_String.YENYEN) { int nPos = strFQN.IndexOf(CAD_String.YEN, CAD_String.YENYEN.Length); if (nPos == -1) { strServerName_Original.value = strFQN.Substring(CAD_String.YENYEN.Length); } else { strServerName_Original.value = strFQN.Substring(CAD_String.YENYEN.Length, nPos – CAD_String.YENYEN.Length); } } […]

Office 用アプリ(Apps for Office)でデモアプリを作る -ログイン編(コンテンツアプリ)-

はじめに 「Office用アプリ(Excel)」から、「Webサーバ(IIS)」にアクセス時のセッション情報の扱いについて調査しました。 下記の図のように、Book内の複数の「オフィス用アプリ」から「Webサーバ(IIS)」にアクセス時でも同一セッションを使用していることが確認できました。 ※Bookが異なる場合は別のセッションになります。 手順 とりあえずシンプルなログイン機能を実装して、 Session 情報が Book 間、Sheet 間で共有されるか否か検証してみた。 前回の内容 Office 用アプリ(Apps for Office)でデモアプリを作る -Webサービス編(コンテンツアプリ)- 2-1) ASP.net のフォーム認証機能を実装する   ASP.net のフォーム認証のように、コンテンツに表示したい。 ASP.net のフォーム認証を試したのだが、何故か「×」が表示されたw 2-2) ログイン(Login)機能を実装する 前回のプロジェクトに以下の項目を追加します。 1. 「追加」 → 「新しい項目」 → 「Visual C#」 → 「Web」 → 「グローバル アプリケーション クラス」を選択 global.asax 2. 「追加」 → 「新しい項目」 → 「Visual C#」 → 「Web」 → 「Web フォーム」を選択 login.aspx こんなかんじになります。 コードはセキュリティの関係上、公開できませんがログインしたユーザー情報を Session に格納するといったシンプルなコードにしました。 デバック(F5)実行すると、コンテンツにログイン(login.aspx)が表示される。 Session 情報が無い場合はこのようになるように、global.asax に定義しています。 ログインすると、コンテンツ内が Test.aspx に変わり、Session にKeep させたユーザー情報が表示されたのがわかる。 同一 Book 内で、異なる Sheet へ同一のコンテンツを配置したら Session 情報がどうなるのか検証した。 同じSession 情報が表示されたので、同一 Session であることがわかる。 同一 Book 内であれば、Session 情報は共有できるようだ。 今度は、新規に別の Book を作成して、同じコンテンツを配置して Session 情報がどうなるのか検証した。 何も表示されていないので、異なるSession であることがわかる。 異なる Book 間では、Session は共有できないようだ。 ログインして表示の切り替え等も確認できたので、 次回は、DBへ接続してデータを抽出してみます。

Office 用アプリ(Apps for Office)でデモアプリを作る -Webサービス編(コンテンツアプリ)-

はじめに 弊社で企画中の Office用 アプリ(Apps for Office)のサンプル版を作成するために、検証サンプルプログラムを作成しています。 今回は以下のコンテンツパネルからWebService(HTTP)経由でデータベースのデータを取得・設定できるようになります。 手順 前提 Excel 2013だけではなく、Excel Web App の両方で動作させるため、作業ウインドウアプリではなく、コンテンツ アプリで作成する必要があります。 Server は、Windows Azure (Web Server、DB Server)を使用します。(Azureでなくても可能) クロスドメイン(Cross-Dmain)対応しなくてはいけません。(後で詳しくかきます) データのやりとりがしたいので、Web サービス(Web Service)を使っていきます。 まだ慣れていないので、順序立ててやっていきます。 1) Office 用アプリ(Apps for Office)に、Web サービスを組み込む 1. Office 2013 用アプリのプロジェクトを作成します 2. Web サービス(Web Service)を追加する プロジェクト上で右クリックして、「追加」 → 「新しい項目」 → 「Visual C#」 → 「Web」 → 「Web サービス」を選択 3. Web フォーム(Web Form)を追加する プロジェクト上で右クリックして、「追加」 → 「新しい項目」 → 「Visual C#」 → 「Web」 → 「Web フォーム」を選択 ひととおり追加したら、こんなかんじになる ・OfficeAppWebService.html (Web フォームを使うため、使用しない) ・Test.aspx (追加した Web フォーム) ・WebService1.asmx (追加した Web サービス) Web フォームに「ScriptManager」を追加して、プロパティから「Service」を選択します。 メンバーを追加して、「Path」項目を、「Web サービス」のファイルを設定します。 【マニフェストファイル : OfficeAppWebService.xml】 <?xml version=”1.0″ encoding=”UTF-8″?> <!–Created:cb85b80c-f585-40ff-8bfc-12ff4d0e34a9–> <OfficeApp xmlns=”http://schemas.microsoft.com/office/appforoffice/1.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:type=”ContentApp”> <Id>a44000b8-0478-468e-9046-4fe25a4c383c</Id> <Version>1.0</Version> <ProviderName>kueno</ProviderName> <DefaultLocale>en-US</DefaultLocale> <DisplayName DefaultValue=”OfficeAppWebService” /> <Description DefaultValue=”OfficeAppWebService Description”/> <Capabilities> <Capability Name=”Workbook” /> </Capabilities> <DefaultSettings> <!–<SourceLocation […]

クラウド見積・請求Office用アプリの詳細機能検討ver1

クラウド見積・請求Office用アプリの詳細機能検討ver1 http://www.slideshare.net/seijinoro/officever1-16729846

Windows Sever のファイルログを取る方法 (WDK; Windows Driver Kit)

はじめに Windows のファイルのアクセスログを取得する方法はいろいろあります。 大まかに考えると以下の方法が考えられます。 Windows 標準のオブジェクト・アクセス監査 (このデータを集計しているパッケージもいくつかあります。) http://itpro.nikkeibp.co.jp/article/COLUMN/20061127/254976/ FileSystemWatcherクラスで取得する方法(詳細なログがとれなさそう) http://www.atmarkit.co.jp/fdotnet/dotnettips/281filewatch/filewatch.html API レベルでファイルI/Oをフックする方法 File System Filter Driverでファイルログを取得する方法(推奨) まずはAPIレベルでファイルI/Oをフックする方法を見てみます。 APIレベルのほとんどの方法はWidnows64bit OSの制限に引っかかるので、ファイルログをとるのには、後術する、 File System Filter Driver というのをおすすめします。 グローバルフック (Global Hook) 主な関数 SetWindowsHookEx() NtSetInfomaintFIleのフックには使えない MSのx64の制限事項になったと思われる。 Message FIFOをフックしているだけなのでAPIフックには使用できない、 キーボードや, マウスのフックは有効 x86では問題なく、サンプルも豊富 ラッパーDLL (Wrapper DLL) NTOSKERNL.exeをラッピングするのはやばそう。しないほうがよいかも 通常はKernel32.dll 等のラッパーを作り、対象のexeファイルレベルでIATテーブルをファイルレベルで変更する。 x86では問題なく、サンプルも豊富 IATフック (ファイルベース) Srv.sys”(windows のファイルサービスのコアモジュール) のリバースエンジニアリング、不正改造にあたるかもしれない ■手順 ①「srv.sys」 をコピーして 「srvExone.Sys」を用意する。 ②「srvExone.sys」 ファイルのIATテーブルを置き換え 「NTOSKERNL.exe!NtSetInfomationFile」 ↓ 「FSM.sys!NtSetInfomationFile」 ③registoryのservice の 「srv.sys」 から「srvExone.Sys」に変更する ■事前に以下を準備 ①FMS.sys にexportとして「FSM.sys!NtSetInfomationFile」を準備する。 IATフック (メモリベース) 参考: http://keicode.com/windows/win09.php srv.sysはカーネルモードで動作するのでユーザモードからIAT書換不可 IATは標準でメモリプロテクト状態(書換時メモリプロテクト例外でシステムダウン) ■検証方法 ①fms.sysという自前デバイスドライバーを作って、カーネルモードで動作させる。 ②fms.sysからIATテーブル書き換え x86-IAT書き換え成功 方法->CPU CR0 Memory WriteProtect check bitを1にして メモリプロテクトチェック外し書き着替える。x64-IAT書き換えが不明 方法1–>CPUのWriteProtectbitがどれか不明、–>調査必要 ※また、x64コンパイラーから インラインアセンブラが使用付加となったため、 MASMで書く必要がある。–>未調査方法2–>自作関数でメモリ自体のプロテクトを外す–>調査必要 ユーザモード用意されている、メモリプロテクトを外す関数 kernel32.dll!ProtectVirtualMemroy ntdll.dll!NtProtectVirtualMemroy ※カーネルモードでは ntoskernl.exeで作らないといけない③IATが実行する関数 NtWriteProcessMemoryでsrv.sysに関数を追加するか必要があるが未検証 おそらく NTOSKERNL.exe にNtWriteProcessMemoryないので、 fms.sys をエクスポートして、それの関数名でIATをおきかえればよいと思う。 SSDTフック 参考:http://www.codeguru.com/cpp/w-p/system/devicedriverdevelopment/article.php/c8035 MSのx64の制限事項になったと思われる。 メモリレベルでSSDTテーブル書き換え (NTOSKERNL.exeのExportテーブル) x86では問題なく、サンプルも豊富 参考(IDT, SDT, SSDT, KiSystemService) http://itpro.nikkeibp.co.jp/article/COLUMN/20070928/283201/ Microsoft OS 64ビットでの規制 システム サービス テーブルの変更。(たぶんSSDTのこと) 割り込みディスクリプタテーブル […]

クラウド見積・請求Officeアプリの概念書(App for office)

企画書は以下のSlideShareに置きました。 http://www.slideshare.net/seijinoro/officever1-16660574 クラウド見積・請求Officeアプリの概念書ver1 (Exceedone Cloud Office App System Overview) from Noro Seiji   ›作成者:野呂清二 ›メール snoro@exceedone.co.jp Facebook http://www.facebook.com/seiji.noro

Officeアプリ(App for Office, Microsoft, Office365) にJQuery のUIのサンプルプログラム追加の方法

はじめに 前回の クラウド/Office365でOffice アプリ(App for Office)を SharePoint アプリカタログ(App Catalog)に登録してサンプルを動かしてみよう。 に引き続き 今回は、Officeアプリでは標準のHTMLとJavaScriptでプログラムを作ります。 JQueryも使えると便利です。以下のように JQuery UIのサンプルを組み込んでみましょう。 JQuery User Interface サンプルプログラム accordion (アコーディオン) autocomplete (オートコンプリート) button (ボタン) radioset (ラジオボタン) tabs (タブ) dialog (ダイアログ) datepicker (日付選択) slider (スライダー) progressbar (プログレスバー) 手順 最初にJQuery User Interface をダウンロードします。 http://jqueryui.com/download/ ダウンロードしたファイルをどこでもいいのですが、以下のように配置します。 Scripts/jquery-ui-custom/css/ui-lightness/jquery-ui-1.10.1.custom.css Scripts/jquery-ui-custom/js/jquery-1.9.1.js Scripts/jquery-ui-custom/js/jquery-ui-1.10.1.custom.js ※圧縮された min.css , min.js を使ってもよいですが、今回はdebugもしたいので、 minは使いません。 Visual Studio から自動生成された OfficeアプリのHTMLに以下のように追加します。 Pages/Test_OfficeApp_001.html <!DOCTYPE html> <html> <head> <meta charset=”UTF-8″ /> <meta http-equiv=”X-UA-Compatible” content=”IE=Edge” /> <title>Test_OfficeApp_001</title> <link rel=”stylesheet” type=”text/css” href=”../Content/Office.css” /> <!– 次のファイルに CSS スタイルを追加します –> <link rel=”stylesheet” type=”text/css” href=”../Content/App.css” /> <!–元のJQueryはふるいのでコメントアウト–> <!–<script src=”../Scripts/jquery-1.7.1.js”></script>–> <!–Start: JQuery, JQuery UIをインポートする。–> <link href=”../Scripts/jquery-ui-custom/css/ui-lightness/jquery-ui-1.10.1.custom.css” rel=”stylesheet” /> <script src=”../Scripts/jquery-ui-custom/js/jquery-1.9.1.js”></script> <script src=”../Scripts/jquery-ui-custom/js/jquery-ui-1.10.1.custom.js”></script> <!–End: JQuery, JQuery UIをインポートする。–> <!– アプリを配置する際に Office.js への CDN 参照を使用します –> <!–<script src=”https://appsforoffice.microsoft.com/lib/1.0/hosted/office.js”></script>–> <!– Office.js のローカル スクリプト参照を使用してオフラインのデバッグを有効にします –> <script src=”../Scripts/Office/1.0/MicrosoftAjax.js”></script> <script src=”../Scripts/Office/1.0/office.js”></script> <!– […]

クラウド/Office365でOffice アプリ(App for Office)を SharePoint アプリカタログ(App Catalog)に登録してサンプルを動かしてみよう。

前回は、Office アプリ(App for Office)を Windows Azure へ発行できたので、 今度は SharePoint のアプリ カタログ(App Catalog)に登録してみよう。 前回の記事 Office アプリ(App for Office)を、Windows Azure Web サイトに発行する はじめに 以下の図のようにOfficeアプリを動作させてみました。 今回は、WebサイトにOfficeアプリ(App for Office) を配置して、Officeアプリの定義ファイルはShaerPoint2013に配置しました。 また、Webサイトに「Windows Azure」を使用し、OfficeアプリカタログにSharePoint2013(Office365/on-premise)を使用しました。 ※Webサイトはhttp通信ができれば、何でもOKです。また、アプリカタログは定義ファイル(xml)を配置するだけなので、ファイルサーバにも配置可能です 。 アプリ登録手順 SharePoint にカタログ(App Catalog)を作成して、アプリを登録しましょう。 Share Point にカタログを作成する 1. SharePoint 上で、カタログサイトを作成します。 作成した URL は、Office 側で信頼させる必要がありますので、メモっておきましょう。 2. 今回配布したいのは、Office 用アプリなので「Office 用アプリの配布」を選択します。 3. アプリを追加するので、「新しいアプリ」を選択します。   4. カタログに配布する際、SharePoint は “アプリ「app」” だが、Office は “定義ファイル「xml」” になる。 定義ファイルは「DocTest1\DocTest1\DocTest1」にあります。 また、定義ファイル(xml)内にある、アプリのURLを修正 <?xml version=”1.0″ encoding=”UTF-8″?> <!–Created:cb85b80c-f585-40ff-8bfc-12ff4d0e34a9–> <OfficeApp xmlns=”http://schemas.microsoft.com/office/appforoffice/1.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:type=”TaskPaneApp”> <Id>e554769a-d335-4ee0-8e99-1b266b5723ba</Id> <Version>1.0</Version> <ProviderName>snoro</ProviderName> <DefaultLocale>en-US</DefaultLocale> <DisplayName DefaultValue=”Test_OfficeApp_001″ /> <Description DefaultValue=”Test_OfficeApp_001 Description”/> <Capabilities> <Capability Name=”Workbook” /> <Capability Name=”Presentation” /> <Capability Name=”Project” /> <Capability Name=”Document” /> </Capabilities> <DefaultSettings> <!–<SourceLocation DefaultValue=”~remoteAppUrl/Pages/Test_OfficeApp_001.html” />–> <SourceLocation DefaultValue=”http://exceedone-test.azurewebsites.net/Pages/DocTest1.html” /> </DefaultSettings> <Permissions>ReadWriteDocument</Permissions> </OfficeApp> 5. 登録されると以下のように表示されます。 これでカタログ(Catalog)に登録できたので、Office で登録したアプリが表示されるか確認してみます。 Office でアプリをインストールする 0. […]

クラウド見積・請求アプリの企画(Microsoft Officeアプリ)

企画書は以下のSlideShareに置きました。 http://www.slideshare.net/seijinoro/officever1 クラウド見積・請求Officeアプリの企画書ver1 (Business Plan, Microsoft App for Office) from Noro Seiji   一部抜粋 はじめに ›Microsoft のOfficeアプリという開発手法がリリースされた! この技術を使用すれば、いつでも、どこでも、どんな環境でも、サービス提供できるアプリを作成できる、さらに、クラウドのOffice365と連携してソーシャル機能と連携すれば、いままでと違った情報共有ができ、お客様に素晴らしい提案が可能となる。 › ›この技術は素晴らしいので、アプリを作成してみたいと思い、この企画を行った。 › ›この企画書 Ver1は1時間で作成し、アジャイル的な方法で随時更新を行い、よりよいものにしていこうと思います。もしかアドバイス等ありましたら、以下までお気軽にメールをいただけたら幸いです。 › ›作成者:野呂清二 ›メール snoro@exceedone.co.jp Facebook http://www.facebook.com/seiji.noro

オフィスアプリ(App for Office 2013) を Windows Azure Web サイトに発行する

前回は、App for Office 2013 のサンプルを作成してみましたが、Microsoft の App for Office / App for SharePoint セミナーにて実践したみたので、記事にしてみます。 前回の記事 はじめての App for Office 2013(Officeアプリ)で開発してみる Server は、Windows Azure を使いました。 Windows Azure は、3か月無償で試せるので是非使ってみよう! オフィスアプリ(App for Office)を作成して Windows Azure の Webサイトに発行するため、Azure の「発行プロファイル」を発行しておきましょう。 アプリの発行時、各種設定情報を保持しているので、無いと設定が面倒?というか出来ないと思います。 Windows Azure でテスト用のWebサイトを作成する Windows Azure については、ここで詳細な手順を紹介しています。 超簡単、はじめての Windows Azure with Visual Studio 2012 and SharePoint2013(Office365, on-premise) Windows Azure で発行プロファイルを作成する 1. テスト用 Webサイトをクリックする。 2. 「発行プロファイルの保存」をクリックします。 保存先は、開発環境下ならとりあえず何処でもいいです。 Window Azure 側の設定(Setting)はここまで。 次は、Visual Studio 2012 側の設定(Setting)を行います。 Visual Studio 2012 で、Azure から発行した「発行プロファイル」を読み込む 1. DocTest1 という名前で、プロジェクトを作成して、発行処理を行います。 2. 「発行プロファイル」を選択するため、「インポート」をクリックします。 3. 「発行プロファイル」が表示されるので、選択します。 4. 【接続】情報が自動で設定されるので、「次へ」をクリック。 5. 【設定】も自動で設定されるので、「次へ」をクリック。 6. 【プレビュー】は、何も表示されていない状態なので、「プレビューの開始」をクリック。 7. 一覧が表示されました。「発行(P)」をクリックしたら、Windows Azure 画面が開くはずです。 Windows Azure でオフィスアプリ(App for Office)を確認してみる 1. アプリが正常に発行できると、Windows Azure 画面が開きます。 2. URL の最後に、アプリ URL 「/Pages/DocTest1.html」を追加して、Enterキーを押す。 アプリが表示されました。 問題ないようですね。 次回は、クラウド/Office365でOffice アプリ(App for Office)を SharePoint […]