Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Shared Memory erstellen, das für alle User lesbar ist?

Frage Microsoft

Mitglied: gypakk

gypakk (Level 1) - Jetzt verbinden

05.02.2008, aktualisiert 06.02.2008, 3903 Aufrufe, 1 Kommentar

Hallo,

ich verwende Shared Memory für den schnellen Datenaustausch zwischen zwei Programmen. Das funktioniert bis jetzt wunderbar.
Nun soll aber der Austausch aber zwischen zwei Prozessen stattfinden, die unter unterschiedlichen Useraccounts laufen.

Wie muss ich dazu den Shared Memory-Bereich generieren?

/* Shared Memory als IO-Bereich generieren */
cioh= CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(cio_t),"CIO");

if(cioh!=NULL && cio==NULL) /* IO-Bereich konnte generiert werden UND IO-Bereich ist noch nicht zugeordnet */
cio= (cio_t*)MapViewOfFile(cioh,FILE_MAP_ALL_ACCESS,0,0,sizeof(cio_t)); /* IO-Bereich zuordnen */


Hat jemand einen Tipp für mich?

gypakk
Mitglied: gypakk
06.02.2008 um 03:42 Uhr
Zwischenbericht:

Nicht schön, aber irgendwie funktioniert's. Zumindest unter XP. Vista-Test steht noch bevor...
Es scheint sich wohl um ein reines Berechtigungsproblem gehandelt zu haben. Das folgende Code-Stückchen setzt die Zugriffsrechte so, dass jeder auf das Shared Memory zugreifen darf.
Sorry, für Kommentierung bin ich inzwischen zu müde. Mein Bett schreit schon.

SID_IDENTIFIER_AUTHORITY sidiaworld= {SECURITY_WORLD_SID_AUTHORITY};
PSID psid;
SID_IDENTIFIER_AUTHORITY sidia;
PACL pacl;
int acllen;
BYTE sd[SECURITY_DESCRIPTOR_MIN_LENGTH];
SECURITY_DESCRIPTOR* psd;
SECURITY_ATTRIBUTES sa;

i= AllocateAndInitializeSid(&sidiaworld,1,SECURITY_WORLD_RID,0,0,0,0,0,0,0,&psid);
acllen= sizeof(ACL)+sizeof(ACCESS_ALLOWED_ACE)*2+GetLengthSid(psid)*2-sizeof(DWORD)+10;
pacl= (ACL*)malloc(acllen);
i= InitializeAcl(pacl,acllen,ACL_REVISION);
i= AddAccessAllowedAce(pacl,ACL_REVISION,0x1fffff,psid);
psd= (SECURITY_DESCRIPTOR*)&sd;
i= InitializeSecurityDescriptor(psd,SECURITY_DESCRIPTOR_REVISION);
i= SetSecurityDescriptorDacl(psd,true,pacl,false);
sa.nLength= sizeof(sa);
sa.lpSecurityDescriptor= psd;
sa.bInheritHandle= true;
cioh= CreateFileMapping(INVALID_HANDLE_VALUE,&sa,PAGE_READWRITE,0,sizeof(cio_t),"?IO");
(...)

Sorry, mit der Formatierung hier im Forum tu ich mich irgendwie noch schwer...
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Ich Möchte in einem Batch Programm User erstellen (14)

Frage von Gangster137910 zum Thema Batch & Shell ...

Server
gelöst Ubuntu: ftp user erstellen und Zugriff auf Webseite geben (7)

Frage von laster zum Thema Server ...

Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (20)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(34)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Webbrowser
Windows 7 unbeliebte Internetseite sperren (15)

Frage von Daoudi1973 zum Thema Webbrowser ...

ISDN & Analoganschlüsse
gelöst Splitter - RJ45 zu RJ11? (13)

Frage von Waishon zum Thema ISDN & Analoganschlüsse ...

LAN, WAN, Wireless
gelöst Suche Firmware Image für Cisco Aironet 1252 (10)

Frage von Herbrich19 zum Thema LAN, WAN, Wireless ...

Netzwerke
VLAN Verständnissproblem (9)

Frage von Dragan123 zum Thema Netzwerke ...